見出し画像

pythonを使う(補足:f文字列)

f文字列(f-strings、フォーマット済み文字列リテラル)
f文字列は、文字列の前にfもしくは大文字のFを記述します。

f-strを使う場合と使わない場合の違いを見てみましょう。

a = "f文字列を使って埋め込む"
print(f"{a}")
[OUT]
f文字列を使って埋め込む

fは' '(" ")の外側に!

a = f"文字列を使って埋め込む"
print(f"{a}")
[OUT]
文字列を使って埋め込む

fを使わないと…

a = "文字列を使って埋め込む"
print("{a}")
[OUT]
{a}
a = "文字列を使って埋め込む"
print(a)
[OUT]
文字列を使って埋め込む


f文字は、{ }の中にいろいろな値を入力していく場合などに便利です。

name = "John"
message = f"Hello, {name}!"
print(message)
[OUT]
Hello, John!

f-strは、python 3.6から導入された機能です。従来は、文字列メソッド.format( )が使われていました。古いバージョンでは、以下のように書く必要があります。

name = "John"
message = "Hello, {}!".format(name)
print(message)
[OUT]
Hello, John!

以前書いた例の復習

family = ['Ryo-ko', 'Mako', 'Taro']
for kid in family:
   print ('おはよう! ' + kid)
[OUT]
おはよう! Ryo-ko 
おはよう! Mako 
おはよう! Taro

f-strを使うと、

family = ['Ryo-ko', 'Mako', 'Taro']
for kid in family:
  print (f'おはよう! {kid}')
[OUT]
おはよう! Ryo-ko 
おはよう! Mako 
おはよう! Taro


f-strを用いた小数点以下桁数の扱い

x = 1234567.89
print(f"{x:.0f}") 
[OUT]
1234568
print(f"{x:.1f}")
[OUT]
1234567.9

整数表示

# Decimal
number = 123
print(f"Decimal: {number:d}")
[OUT]
Decimal: 123

小数でスクリプトを実行するとエラーが出る

# Decimal
number = 123.5
print(f"Decimal: {number:d}")

円周率を桁を決めて表示

pi = 3.1415926535
print(f"Floating Point: {pi:.2f}")
[OUT]
Floating Point: 3.14

.0fで整数のみ表示

# Floating Point (You can change number  with any number of decimal places)
pi = 3.1415926535
print(f"Floating Point: {pi:.0f}")
[OUT]
Floating Point: 3

dで整数表示にしようとするとエラーが出る

# Floating Point (You can change number  with any number of decimal places)
pi = 3.1415926535
print(f"Floating Point: {pi:d}")

dは整数に変換してからなら表示可能

# Floating Point (You can change number 2 with any number of decimal places)
pi = 3.1415926535
p = int(pi)
print(f"Floating Point: {p:d}")
[OUT]
Floating Point: 3

%表示

# Percentage
completed = 0.755
print(f"Percentage: {completed:%}")
[OUT]
Percentage: 75.500000%

%表示でも桁数を指定できます

# Percentage
completed = 0.755
print(f"Percentage: {completed:.2%}")
[OUT]
Percentage: 75.50%

f-strは幅を決めて表示する場合などに便利

# Width (Specify the string width with just number)
name1 = "John"
age1 = 30
name2 = "Bernadetta"
age2 = 29
print(f'Name: {name1:12}', f'Age: {age1}')
print(f'Name: {name2:12}', f'Age: {age2}')

以下のように出力されます

[OUT]
Name: John         Age: 30
Name: Bernadetta   Age: 29

桁を揃えて表示したい場合などによく使えます。

# Alignment
name1 = "John"
sales1 = 30000
name2 = "Bernadetta"
sales2 = 9900
totalsales = 'Total Sales:'
print(f'{name1:^13}', f'Sales: {sales1:>7}')
print(f'{name2:^13}', f'Sales: {sales2:>7}')
[OUT]
    John      Sales:   30000
 Bernadetta   Sales:    9900
# Fill and Align
name = "John"
print(f"Centered with asterisks: {name:*^10}")
print(f"Centered with dash: {name:-^15}")
[OUT]
entered with asterisks: ***John***
Centered with dash: -----John------

色々なフォーマットを組み合わせてみましょう。

# Combining multiple formatting
name1 = "John"
sales1 = 3066630.1
name2 = "Bernadetta"
sales2 = 290000.005
totalsales = 'Total Sales:'
print(f'Name: {name1:-<12}', f' Sales: {sales1:>13,.3f}') # String width 13 with thousand separators and 3 decimal places
print(f'Name: {name2:-<12}', f' Sales: {sales2:>13,.3f}')
print(f'{totalsales:>26}', f'{sales1+sales2:>13,.3f}')
[OUT]
Name: John--------  Sales: 3,066,630.100
Name: Bernadetta--  Sales:   290,000.005
              Total Sales: 3,356,630.105

改行を挿入する場合にもf-strを使えます。

# Iterating over a list
for fruit in ["apple", "banana", "cherry"]:
    print(fruit)
[OUT]
apple
banana
cherry

改行は、\n(JISキーボードでは「option⌥」 + 「¥」)
f-strを使ってみると、

# Iterating over a list
for fruit in ["apple", "banana", "cherry"]:
    print(f'{fruit}\n')
[OUT]
apple

banana

cherry



いいなと思ったら応援しよう!