split,rsplit関数とjoin関数の様々な使い方を実例でまとめています。
split関数
文字列を指定した文字で分割しlistにする。
オブジェクト.split("分割する文字")
└ 引数内の文字は削除される
└ オブジェクトは文字列 ※数値はエラー
└ 破壊的でない ※元のオブジェクトはそのまま
└ 引数が空の場合は、空白で分割
空白で分割
s="1 2 3 4 5 6"
l = s.split()
print(l)
#出力
['1', '2', '3', '4', '5', '6']
s="1 2 3 4 5 6"
l = s.split(" ")
print(l)
#出力
['1', '2', '3', '4', '5', '6']
文字列以外の指定はエラーになる
文字列以外を分割する場合はエラーとなる
i=123456
l = i.split()
AttributeError: 'int' object has no attribute 'split'
指定文字で分割
s="1,2,3,4,5,6"
l = s.split(",")
print(l)
#出力
['1', '2', '3', '4', '5', '6']
s="I have a pen !"
l = s.split()
print(l)
#出力
['I', 'have', 'a', 'pen', '!']
s="I have a pen !"
l = s.split("a")
print(l)
#出力
['I h', 've ', ' pen !']
区切る数を指定する方法
第二引数で整数を渡すと、その数が区切りの最大数となる。
split('区切り文字', 整数)
└ 整数分区切る
└ インデックス番号の最大値が整数になる
s="1 2 3 4 5 6"
l = s.split(" ",2)
print(l)
#出力
['1', '2', '3 4 5 6']
s="1 2 3 4 5 6"
l = s.split(" ",2)
print(l[0])
print(l[2])
#出力
1
3 4 5 6
0番目の要素と、2番めの要素を出力。
l[3]は範囲外 (IdexError: list index out of range)
rsplit関数
第二引数で指定した数だけ、後ろから区切る。
rsplit('区切り文字', 整数)
└ 整数分後ろから区切る
└ インデックス番号の最大値が整数になる
s="1 2 3 4 5 6"
ls = s.split(" ", 2)
lr = s.rsplit(" ", 2)
print(ls)
print(lr)
#出力
['1', '2', '3 4 5 6']
['1 2 3 4', '5', '6'] #rsplitは後ろから区切る
s="1 2 3 4 5 6"
ls = s.split(" ", 2)
lr = s.rsplit(" ", 2)
#0番目の要素を出力
print(ls[0])
print(lr[0])
#出力
1
1 2 3 4
▼区切らない場合、出力はsplit関数と同じになる
s="1 2 3 4 5 6"
ls = s.split()
lr = s.rsplit()
print(ls)
print(lr)
#出力
['1', '2', '3', '4', '5', '6']
['1', '2', '3', '4', '5', '6']
join関数
要素が文字列のlistを、指定した文字で結合する。
'結合する文字'.join(list)
└ listの要素は文字列
└ 要素が文字列以外の場合エラーになる
└ 破壊的でない(オブジェクトは元のまま)
文字列のlistを結合(デフォルト)
l = ['I', 'have', 'a', 'pen', '!']
#「-」で結合
s1 = "-".join(l)
print(s1)
#空白で結合
s2 = " ".join(l)
print(s2)
#出力
I-have-a-pen-!
I have a pen !
▼要素が文字列以外の場合はエラーになる
l=[1,2,3,4]
s = "-".join(l)
#出力
TypeError: sequence item 0: expected str instance, int found
数値のlistを結合
[1, 2, 3]のように数字が入ったlist型を結合する方法には主に次の2つがあります。
(1) map関数で文字列に変換する。
(2) for文で文字列に変換する。
(1) map関数で文字列に変換する
map関数で要素を数値→文字列に変換し、joinで結合する。
l=[1,2,3,4]
ls = map(str, l)
s = "-".join(ls)
print(s)
#出力
1-2-3-4
▼map関数とは
map(処理, イテラブル)
・イテラブルの各要素に一つづつ処理を実行する。
・処理に型を指定すると、その型に変換できる
・出力はmap型 (例:)
・破壊的でない。
▼mapで文字列に変換するmap(str, イテラブル)
l=[1,2,3,4]
s = map(str, l)
print(list(s))
#出力
['1', '2', '3', '4']
(2) for文で文字列に変換する
listの要素を一つずつ抜き出し、str型に変換する。
l=[1,2,3,4]
s = "-".join([str(i) for i in l])
print(s)
#出力
1-2-3-4
・内包表記[処理 for 変数 in イテラブル]
└ 処理結果はlistで返る。