Pythonのjoinメソッドでリスト配列の文字列を連結(結合)する
- 公開日:2019/01/16
- 更新日:2019/02/05
- 投稿者:n bit
Pythonでリスト配列になっている文字列(str型)の連結(結合)を行うには『join』メソッドを利用します。今回は『join』メソッドを使用して任意の配列型文字列の連結方法や、文字列以外に数値(int)や小数(float)が混じったリスト配列の連結方法も解説。
この記事は約 分で読めます。(文字)
joinメソッドで文字列を連結(結合)
Pythonでリスト配列に格納されている文字列(str型)連結には『join』メソッドを利用します。『join』メソッドの指定方法は以下の通りです。
- 連結された文字列 = '連結間に入る文字列'.join(連結する文字列のリスト)
『連結間に入る文字列』はシングルクォーテーション、または、ダブルクォーテーションで囲みます。連結する文字列の間に入る文字列で、特に必要がなければ何も指定しなくても大丈夫です。
連結事例
- ''.join([a, b]) → ab
- ','.join([a, b]) → a,b
それでは実際に『join』メソッドを利用して前回splitメソッドを使って分割した森鴎外の『知恵袋心頭語』内の1文のリスト文字列を連結してみましょう。
Note
森鴎外の『知恵袋心頭語』内の1文をsplitメソッドを使って分割したリスト
['人', 'に', '言う', 'べき', '事', 'は', '、', '最後', 'まで', 'きちんと', '言う', 'が', 'よい', '。', '全部', 'は', '言い', 'たく', 'ない', 'こと', 'だっ', 'たら', '、', 'むしろ', '初め', 'から', '黙っ', 'て', 'い', 'よ', '。']
Pythonのsplitメソッドで文字列をリスト配列に分割する
Pythonで基本的な文字列(str型)の分割を行うときにはsplitメソッドを利用します。今回は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』メソッドで連結するためにはジェネレータ内包表記を合わせて利用しましょう。
ジェネレータ内包表記の記述方法については下記のページで詳しく解説しています。ジェネレータ内包表記について忘れてしまった方や深く内容を理解しておきたい方はご覧ください。
Pythonで作業メモリを節約できるジェネレータ内包表記の使い方
Pythonで作業メモリを節約しプログラムの実行処理速度を高速化させるジェネレータ内包表記について解説。ジェネレータ関数に似ていますが関数ではなく式のためより簡潔なコードで記述でき、膨大な数の演算でも処理できます。
それでは先程のエラーが出ていたコードジェネレータ内包表記を使って下記のように書き換えます。ジェネレータ内包表記でリスト内の要素を全て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 連結する文字列のリスト)
【フリーランス向けの完全無料Pythonプログラミング講座】
dot blogではこの記事以外にも完全無料でフリーランス向けのPythonプログラミング講座を公開中です。フリーランスとして活躍し稼ぐための強力な武器となりますよ。
Python入門講座【無料のプログラミング学習講座】
最近特に注目度が高くなってきているプログラミング言語Python。転職、フリーランス、独立・起業を検討中、日々の業務が忙しい社会人等は今こそ身に付けておきたいスキルの1つ。初心者向けにやさしいプログラミング学習内容のPython入門講座を無料で公開。