目的別のおすすめ
| シンプル | +演算子で結合する(+α) |
| 通常で使用 | f文字列 |
| リストからCSV / path | リストから文字列にする |
| 大量ループ結合 | 大量ループで文字列を結合するとき( join) |
| 複数行文字列 | 複数行の文字列/docstring('''/""") |
確認環境:Python 3
+演算子で結合する(+α)
| 文字列 + 文字列 |
print('abc' + 'def') # abcdef
a = 'def'
print('abc' + a) # abcdef
注意:ループ回数が大量で結合を行う場合、通常の+結合は処理が非常に遅くなります。
→その場合は、joinを使用します。
文字列を並べて結合する
print('abc''def') # abcdef
文字列どうし並べて結合できます。
文字列と変数を結合する
a = "def"
print('abc',a) # abc def
文字列と変数の間にカンマ(,)を追加で結合できます。
f文字列
Python 3.6以降で最も推奨される方法です。変数や式を直感的に埋め込めます。
name = "Taro"
age = 20
result = f"My name is {name}. I am {age} years old."
print(result) # My name is Taro. I am 20 years old.
使い所:変数を文字列に組み込みたいとき、ログ出力、短い文章の作成。
書式指定も可能
value = 123.456
print(f"{value:.1f}") # 123.5 小数1桁
print(f"{value:.2f}") # 123.46 小数2桁
print(f"{value:.3f}") # 123.456 小数3桁
num = 1000000
print(f"{num:,}") # 1,000,000 カンマ区切り
リストから文字列にする
リストからCSVを作成
import csv
import io
items = ["apple", "banana,test", "orange"]
buffer = io.StringIO()
writer = csv.writer(buffer)
writer.writerow(items)
csv_text = buffer.getvalue().strip()
print(csv_text) # apple,"banana,test",orange
csvモジュール推奨です。
カンマ入りも自動エスケープされます。
リストからpathを作成
from pathlib import Path
parts = ["home", "user", "documents", "file.txt"]
path = Path(*parts)
print(path) # home/user/documents/file.txt
pathlib.Path推奨です。
OSによるパス区切り文字(/ や \)を自動で処理してくれるので、WindowsでもMacでも同じコードが動きます。
大量ループで文字列を結合するとき(.join)
items = ["apple", "banana", "orange"]
result = ", ".join(items)
print(result) # apple, banana, orange
+のループより大幅に高速です。
.joinは、文字列 ", " が持っている joinメソッドを呼んでいるという意味です。
複数行の文字列/docstring('''/""")
| '''文字列''' |
| """文字列""" |
シングルコーテーションまたはダブルコーテーションを3つ続けます。
a = '''ab
cd
e'''
print(a) # ab cd e
b = """fg
hi
j"""
print(b) # fg hi j
1~4行目は、シングルコーテーション(')の3つを文字列の最初と最後に付与しています。
6~9行目は、ダブルコーテーション(")の3つを文字列の最初と最後に付与しています。
ダブルコーテーションは、docstringとして使用されます。
関連の記事
