文字列.split() / 文字列.join()
| 対応: | Python 2(2000) |
|---|
文字列を区切り文字で分割してリストにしたり、リストの要素を結合して文字列にするメソッドです。
構文
# 区切り文字で文字列を分割してリストを返します。 文字列.split(区切り文字=None, 最大分割数=-1) # 右側から分割します。最大分割数を指定したときに差が出ます。 文字列.rsplit(区切り文字=None, 最大分割数=-1) # リストの各要素をセパレータで結合して文字列を返します。 セパレータ文字列.join(イテラブル)
関数一覧
| メソッド | 概要 |
|---|---|
| str.split(sep=None, maxsplit=-1) | 文字列を sep で分割したリストを返します。sep を省略すると空白文字(スペース・タブ・改行)で分割します。 |
| str.rsplit(sep=None, maxsplit=-1) | 右側から分割します。maxsplit を指定したとき、split() と逆方向から切ります。 |
| sep.join(iterable) | イテラブルの各要素を文字列に変換してセパレータで連結します。要素はすべて文字列でなければなりません。 |
サンプルコード
sample_str_split_join.py
# split() で文字列を分割します。
sentence = "Python は楽しくて 強力な 言語です"
words = sentence.split() # 空白で分割します。
print(words) # ['Python', 'は楽しくて', '強力な', '言語です']
# 区切り文字を指定して分割します。
csv_line = "岡部倫太郎,18,未来ガジェット研究所,研究員"
fields = csv_line.split(",")
print(fields) # ['岡部倫太郎', '18', '未来ガジェット研究所', '研究員']
# 最大分割数を指定します。
text = "a:b:c:d:e"
print(text.split(":", 2)) # ['a', 'b', 'c:d:e'](最大2回分割)
# パスからファイル名を取り出す例です。
path = "/home/user/documents/file.txt"
parts = path.split("/")
print(parts[-1]) # file.txt(最後の要素がファイル名)
# rsplit() で右から分割します。
print(text.rsplit(":", 2)) # ['a:b:c', 'd', 'e'](右から最大2回分割)
# 拡張子を分離する実用例です。
filename = "photo.2026.jpg"
name, ext = filename.rsplit(".", 1) # 右から1回だけ分割します。
print(name) # photo.2026
print(ext) # jpg
# join() でリストを結合して文字列を作ります。
words2 = ["Python", "は", "楽しい"]
result = " ".join(words2) # スペースで結合します。
print(result) # Python は 楽しい
# CSV行を組み立てます。
data = ["岡部倫太郎", "18", "未来ガジェット研究所"]
csv = ",".join(data)
print(csv) # 岡部倫太郎,18,未来ガジェット研究所
# 改行で結合してテキストを組み立てます。
lines = ["1行目", "2行目", "3行目"]
text = "\n".join(lines)
print(text)
# 1行目
# 2行目
# 3行目
# join() は要素が文字列のみ有効です。数値は事前に変換が必要です。
nums = [1, 2, 3, 4, 5]
print("-".join(str(n) for n in nums)) # 1-2-3-4-5
# split() と join() を組み合わせてスペースを正規化します。
messy = " Python は 楽しい "
normalized = " ".join(messy.split())
print(normalized) # Python は 楽しい
python3 str_split_join.py ['Python', 'は楽しくて', '強力な', '言語です'] ['岡部倫太郎', '18', '未来ガジェット研究所', '研究員'] ['a', 'b', 'c:d:e'] file.txt ['a:b:c', 'd', 'e'] photo.2026 jpg Python は 楽しい 岡部倫太郎,18,未来ガジェット研究所 1行目 2行目 3行目 1-2-3-4-5 Python は 楽しい
概要
『split()』の引数を省略した場合(または None を指定した場合)は、連続する空白文字を1つの区切りとして扱い、先頭・末尾の空白も除去します。空文字列を区切り文字に指定すると『ValueError』が発生します。
『join()』はセパレータ(結合に使う文字列)を先に書くのがPythonの作法です。最初は直感に反すると感じるかもしれませんが、これにより空文字列で結合(単純な連結)を『"".join(parts)』と書けるなどのメリットがあります。『join()』に渡すイテラブルの要素はすべて文字列でなければなりません。整数などが含まれると『TypeError』が発生するため、必ず『str()』で変換してください。
文字列の置換については『str.replace()』、文字列のトリミングについては『str.strip()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。