【python】split,rsplit関数とjoin関数の使い方を実例で解説

Python-prograshi(プロぐらし)-kv Python
記事内に広告が含まれていることがあります。
[PR]

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で返る。

タイトルとURLをコピーしました