Pythonお悩み解決

Pythonに関する疑問や悩みにこたえるブログです

文字列を区切り文字で結合したい: joinメソッド

今回は文字列を区切り文字で結合する方法を紹介します。

join()メソッド

例として、以下のように,で区切られている文字列を考えてみましょう。

a,b,c

文字列を区切り文字で結合するには、文字列のjoin()メソッドを使います。

基本的な使い方は下記の通りです。

区切り文字.join(イテラブル)

イテラブル(iterable)とは、リストのように要素を一度に1つずつ返せるオブジェクトのことです。

結果は、各要素を区切り文字で結合した文字列になります。

実際に使ってみましょう。

>>> ",".join(["a", "b", "c"])
'a,b,c'

今回の場合、区切り文字は,なので、",".join(...)としています。

結果は、各要素を区切り文字で結合した文字列 'a,b,c' となりました。

イテラブルが文字列以外の要素を返す場合

join()メソッドのイテラブルが、文字列以外の要素を返す場合、エラーとなります。

例えば、以下のように文字列と数値が混在するリストをjoin()メソッドに渡してみましょう。

>>> "-".join(["03", 1234, "5678"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 1: expected str instance, int found

TypeErrorになりました。エラーメッセージにexpected str instance, int foundとあるように、文字列(str)を期待したところに数値(int)があったためです。

以下のように、リストの要素がすべて文字列であれば、期待通りに動作します。

>>> "-".join(["03", "1234", "5678"])
'03-1234-5678'

まとめ

  • 文字列を区切り文字で結合するには、文字列のjoin()メソッドを使う
  • イテラブル(リストなど)が文字列以外の要素を返すと、エラー(TypeError)になる

参考

関連記事

python-onayami.com