Pythonのjoinメソッドでリスト配列の文字列を連結(結合)するのイメージ画像

Pythonのjoinメソッドでリスト配列の文字列を連結(結合)する

  • 公開日:2019/01/16
  • 更新日:2019/02/05
  • 投稿者:n bit

Pythonでリスト配列になっている文字列(str型)連結(結合)を行うには『join』メソッドを利用します。今回は『join』メソッドを使用して任意の配列型文字列の連結方法や、文字列以外に数値(int)や小数(float)が混じったリスト配列の連結方法も解説。

  • Python

この記事は約 分で読めます。(文字)

joinメソッドで文字列を連結(結合)

Pythonでリスト配列に格納されている文字列(str型)連結には『join』メソッドを利用します。『join』メソッドの指定方法は以下の通りです。

  • 連結された文字列 = '連結間に入る文字列'.join(連結する文字列のリスト)

『連結間に入る文字列』はシングルクォーテーション、または、ダブルクォーテーションで囲みます。連結する文字列の間に入る文字列で、特に必要がなければ何も指定しなくても大丈夫です。

連結事例

  • ''.join([a, b]) → ab
  • ','.join([a, b]) → a,b

それでは実際に『join』メソッドを利用して前回splitメソッドを使って分割した森鴎外の『知恵袋心頭語』内の1文のリスト文字列を連結してみましょう。

Note

森鴎外の『知恵袋心頭語』内の1文をsplitメソッドを使って分割したリスト

['人', 'に', '言う', 'べき', '事', 'は', '、', '最後', 'まで', 'きちんと', '言う', 'が', 'よい', '。', '全部', 'は', '言い', 'たく', 'ない', 'こと', 'だっ', 'たら', '、', 'むしろ', '初め', 'から', '黙っ', 'て', 'い', 'よ', '。']

joinを使用してリスト配列の文字列を連結する

『join』メソッドの第1引数に『連結する文字列を格納しているリスト』を指定して連結してみます。記述方法は以下の通りです。

  • 連結された文字列 = '連結間に入る文字列'.join(連結する文字列のリスト)

『連結間に入る文字列』はダブルクォーテーション【"】、または、シングルクォーテーション【'】で囲んで指定しましょう。

text_list = ['人', 'に', '言う', 'べき', '事', 'は', '、', '最後', 'まで', 'きちんと', '言う', 'が', 'よい', '。', '全部', 'は', '言い', 'たく', 'ない', 'こと', 'だっ', 'たら', '、', 'むしろ', '初め', 'から', '黙っ', 'て', 'い', 'よ', '。']


text_new = ''.join(text_list)
print(text_new)

出力結果

人に言うべき事は、最後まできちんと言うがよい。全部は言いたくないことだったら、むしろ初めから黙っていよ。

リスト内にあった文字列がすべて連結されたことが確認できます。

joinで連結間の文字列を指定して文字列を連結する

次は連結間の文字列を指定して連結してみましょう。『連結間に入る文字列』にハイフンを指定した事例です。

text_list = ['人', 'に', '言う', 'べき', '事', 'は', '、', '最後', 'まで', 'きちんと', '言う', 'が', 'よい', '。', '全部', 'は', '言い', 'たく', 'ない', 'こと', 'だっ', 'たら', '、', 'むしろ', '初め', 'から', '黙っ', 'て', 'い', 'よ', '。']


text_new = '-'.join(text_list)
print(text_new)

出力結果

人-に-言う-べき-事-は-、-最後-まで-きちんと-言う-が-よい-。-全部-は-言い-たく-ない-こと-だっ-たら-、-むしろ-初め-から-黙っ-て-い-よ-。

リスト内にあった文字列がすべてハイフンを挟んで連結されたことが確認できます。連結間に入る文字列ですので連結された文章の文頭と文末には適用されません。

joinを使用して文字列以外に数値(int)や小数(float)が混じったリスト配列の文字列を連結する

『join』メソッドは基本的にリストの中に格納された文字列(str型)にしか対応していません。そのため文字列(str型)以外が含まれたリストで『join』メソッドを利用すると下記のように『TypeError』が返ってきます。

text_list = ['test', 1, 1.5]


text_new = ''.join(text_list)
print(text_new)

出力結果

TypeError: sequence item 1: expected str instance, int found

文字列(str型)以外に数値(int)や小数(float)が混じったリスト配列を『join』メソッドで連結するためにはジェネレータ内包表記を合わせて利用しましょう。

ジェネレータ内包表記の記述方法については下記のページで詳しく解説しています。ジェネレータ内包表記について忘れてしまった方や深く内容を理解しておきたい方はご覧ください。

それでは先程のエラーが出ていたコードジェネレータ内包表記を使って下記のように書き換えます。ジェネレータ内包表記でリスト内の要素を全てstr型にいちど変換しています。

text_list = ['test', 1, 1.5]


text_new = ''.join(str(x) for x in text_list)
print(text_new)

出力結果

test11.5

今度はエラーが出ずリスト内の要素がすべて文字列(str型)として連結されました。

『join』を使って結合するリスト内にどのような要素が含まれるか事前に予測できない場合は、最初からジェネレータ内包表記を使った記述にしておく方が安全です。

今日のdot

プログラミングでは文字列(str型)操作が頻繁に出てきます。その中で文字列(str型)の連結操作も非常に多いでしょう。

join』メソッドを使った文字列(str型)の基本的な連結方法は下記の通りです。

  • 連結された文字列 = '連結間に入る文字列'.join(連結する文字列のリスト)

リスト内の要素に文字列(str型)以外も含まれる場合はジェネレータ内包表記を利用した下記のコードに変更しましょう。

  • 連結された文字列 = '連結間に入る文字列'.join(str(x) for x in 連結する文字列のリスト)