ホーム > python > tips > Pythonの文字列生成まとめ

Pythonの文字列生成まとめ

pythontips

Pythonでの文字列生成

Pythonでの文字列生成の方法はいくつか存在します。
・+演算子による結合
・join()メソッドの利用
・format()メソッドの利用
・フォーマット済み文字列リテラル(f-string、f文字列)の利用
ここでは各手法を簡単に紹介します。


環境

今回動作の確認を行った際のバージョンは下記の通り
python:3.10.9


+演算子による結合

+演算子を用いて文字列の変数および文字列リテラルを結合することが可能です。

if __name__ == '__main__':
print('文字列' + '結合')
# 文字列結合
a = '文字列'
b = '結合'
print(a+b)
# 文字列結合

整数型など文字列以外の値が含まれている場合エラーになるので注意が必要です。
str()をつけてキャストすることで、結合可能になります。

if __name__ == '__main__':
for i in range(3):
print(str(i) + '回目です')
# 0回目です
# 1回目です
# 2回目です
for i in range(3):
print(i + '回目です')
# TypeError: unsupported operand type(s) for +: 'int' and 'str'

また、+演算子を用いず文字列リテラルを並べて記述するだけでも結合可能です。

if __name__ == '__main__':
test = 'test''test'
print(test)
# testtest
# スペースが入っていてもOK
test2 = 'test' 'test'
print(test2)
# testtest


join()メソッドの利用

str.join(iterable)を用いることで文字列のリスト等を結合することが可能です。
'区切り文字'.join(iterable)の様に利用し、iterableは文字列のリストやtupleなどが利用可能です。

if __name__ == '__main__':
temp_list = ['join', 'テスト', 'python']
print(','.join(temp_list))
# join,テスト,python
temp_list = ['join', 'テスト', 'python']
print('_'.join(temp_list))
# join_テスト_python
temp_list = ['join', 'テスト', 'python']
print('かつ'.join(temp_list))
# joinかつテストかつpython
temp_tuple = ('join', 'テスト', 'python')
print(','.join(temp_tuple))
# join,テスト,python

文字列以外の型が含まれる場合はエラーとなってしまうので、リスト内方表記などを使って文字列型に変換することでjoin()を使用することが可能です。

if __name__ == '__main__':
temp_list = [1, 2, 3]
print(','.join([str(t) for t in temp_list]))


format()メソッドの利用

文字列内に置換フィールド{}を組み込み、str.format(*args, **kwargs)を使用することでformat()の引数で指定した値に置き換えることが可能です。

if __name__ == '__main__':
print('{}回目のテストです'.format(10))
# 10回目のテストです
print('{}回目の{}です'.format(10, 'テスト'))
# 10回目のテストです

関連記事:Pythonでformatメソッドを用いた書式の指定

フォーマット済み文字列リテラル(f-string、f文字列)の利用

Pythonではバージョン3.6よりフォーマット済み文字列リテラル(f-string)というものが追加されています。
接頭辞 'f' または 'F'を付けることで、文字列の中に変数や式などを組み込んで記載することが可能です。
https://docs.python.org/ja/3.10/tutorial/inputoutput.html#tut-f-strings
https://docs.python.org/ja/3.10/reference/lexical_analysis.html#f-strings

if __name__ == '__main__':
print(f'{1}{3}は奇数です')
# 1と3は奇数です
a = '奇数'
print(f'{1}{3}{a}です')
# 1と3は奇数です
x = 10
y = 20
print(f'{x}+{y}={x+y}')
# 10+20=30
print(f'{x=}{y=}の和は{x + y=}です')
# x=10とy=20の和はx + y=30です

関連記事:Pythonのフォーマット済み文字列リテラル(f-string、f文字列)