Pythonの文字列生成まとめ
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# スペースが入っていてもOKtest2 = '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,テスト,pythontemp_list = ['join', 'テスト', 'python']print('_'.join(temp_list))# join_テスト_pythontemp_list = ['join', 'テスト', 'python']print('かつ'.join(temp_list))# joinかつテストかつpythontemp_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 = 10y = 20print(f'{x}+{y}={x+y}')# 10+20=30print(f'{x=}と{y=}の和は{x + y=}です')# x=10とy=20の和はx + y=30です