プログラミング
記事内に商品プロモーションを含む場合があります

Pythonで文字列を分割・結合する方法(split, split, join)【Python入門】

tadanori

Pythonで文字列を分割する場合はsplit()を利用します。最近、他人のコードを見る機会があって見ていると知らないsplitの使い方をしていました。split関数の使い方を結構知らないことに気づき、調べてみました。

Pythonで文字列を分割

空白文字で分割:split()

Pythonで区切り文字で文字列を分割する場合、split()を利用します。

デフォルトでは、空白文字(スペース・改行・タブ)などで分割します。

下記はコード例です。コード例ようにs.split()とするだけで文字列を空白文字で区切って分割できます。

s = "this is a test string."
print(s)
# this is a test string.
t = s.split()
print(t)
# ['this', 'is', 'a', 'test', 'string.']

区切り文字を指定して分割: split(sep=..)

区切り文字を指定することも可能です。以下の例では、”,“を区切り文字として文字列を分割しています。

注意点は、区切り文字を指定すると、空白文字は削除してくれないことです。下のコード例では、, fourの部分にスペースがありますが、これは削除されず分割後は’ four‘と、スペースが残った状態になります。

s = "one,two,three, four"
print(s)
# one,two,three, four
t = s.split(',')
print(t)
# ['one', 'two', 'three', ' four']

空白を削除して分割したい場合は、replace()を使ってあらかじめ空白を削除しておくとよいです。

s = "one,two,three, four"
s = s.replace(' ', '')
print(s)
# one,two,three,four
t = s.split(',')
print(t)
# ['one', 'two', 'three', 'four']

区切り数を指定して分割:split(maxsplit=..)

区切り数を指定して区切ることも可能です。区切り数を指定した場合は、文字の先頭から見て見つかった区切り文字で、区切り数に指定した数だけ区切ります。

区切り数を指定した場合は、区切り数+1に分割されることになります。

以下は区切り数を2つに指定した例です。’one’, ‘two’, ‘three,four’の3つに区切られ、3つ目の’,‘では区切られていないことがわかります。

s = "one,two,three,four"
print(s)
# one,two,three,four
t = s.split(',', maxsplit=2)
print(t)
# ['one', 'two', 'three,four']

この機能の使い方ですが、例えば先頭の’:’までカットして後ろの部分だけ取り出したい場合などに便利です。例えば、最初に定型句”Result is:“があって、その部分をカットした文字列を取得したい場合には、以下のようにできます。

s = "Result is:xxxx and yyyy, zzzz : This is a ..."
print(s)
#Result is:xxxx and yyyy, zzzz : This is a ...
t = s.split(':', maxsplit=1)[-1]
print(t)
# xxxx and yyyy, zzzz : This is a ...

文字列を右端から分割:rsplit(sep=…, maxsplit=…)

文字列を右側から分割するメソッドも用意されています。maxsplitを指定しなければsplitと同じなので普段は使うことは少ないです。

maxsplitを指定すると右側から指定した数+1の分割を行います。

例えば、先ほどの「区切り数を指定して分割」をrsplit()に変えると、結果は以下のようになります

これは、末尾の部分だけ取り出したい・削除したい場合などに役に立ちます。

s = "one,two,three,four"
print(s)
# one,two,three,four
t = s.rsplit(',', maxsplit=2)
print(t)
# ['one,two', 'three', 'four']

改行で分割する: splitlines

改行で分割したい場合は、splitlines()を利用します。

s = "one,two\nthree,four"
print(s)
# one,two
# three,four
t = s.splitlines()
print(t)
# ['one,two', 'three,four']

このメソッドを使わなくてもsplit('\n')とすれば良いような気もしますが、splitlines()では、以下のようなコードを改行として分割してくれます。

分割される文字

\n, \r, \r\n, \v, \x0b, \f, \x0c, \x1c, \x1d, \x1e, \x85, \u2028, \u2029

Pythonで文字列を結合

文字列を結合:join

分割された文字列を結合するにはjoin()を使います。

以下は文字列を空白文字で分割して、,で結合する例です。

s = "this is a test string."
print(s)
# this is a test string.
t = s.split()
t = ",".join(t)
print(t)
# this,is,a,test,string.

split()join()を組み合わせることで無駄な空白を取り除いたりすることが可能です。下記は、改行を削除する例です。

s = "one,two,\nthree,four"
print(s)
# one,two,
# three,four
t = s.split()
t = "".join(t)
print(t)
# ['one,two,three,four']

まとめ

split()maxsplitが指定できることを知りませんでした。普段使い慣れているメソッドも、調べて見ると知らない機能があるということがわかりました。

実は結構便利な機能なので、たまにはリファレンスを確認しないといけないなと感じました。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

記事URLをコピーしました