本記事では、pythonで文字列を分割する方法を解説します。splitメソッドを利用すると簡単に文字列の分割ができるので、このメソッドについて説明します。
split()とは
split()メソッドは、文字列を特定の区切り文字(デリミタ)で分割し、分割された部分文字列のリストを返すpythonの組み込みメソッドです。テキスト処理やデータ解析において非常に便利な機能で、CSVファイルの行を解析する際やユーザー入力を処理する際によく使用されます。
構文
split()メソッドの基本的な構文は以下の通りです。
string.split(separator, maxsplit)
- separator: 文字列を分割する区切り文字を指定します。省略すると、任意の空白文字(スペース、タブ、改行など)が区切り文字として使用されます。
- maxsplit: 最大分割回数を指定します。省略すると、可能な限り分割されます。
例
基本的な分割
以下は単語間のスペースを利用して文章を単語のリストに分割する基本的な例です。separatorを指定しない場合、デフォルトでは空白が区切り文字として使用されます。
text = "Hello World Python Programming"
result = text.split()
print(result)
# 出力: ['Hello', 'World', 'Python', 'Programming']
カンマによる分割
次の例では、カンマ区切りのデータ(CSVの1行のような形式)をカンマを区切り文字として指定して分割しています。
csv_data = "apple,banana,orange,grape"
fruits = csv_data.split(",")
print(fruits)
# 出力: ['apple', 'banana', 'orange', 'grape']
maxsplitによる分割制限
maxsplitパラメータを使用すると、指定した回数だけ分割を行い、残りの部分はそのまま最後の要素として残すことができます。この例では最初の3つの空白で分割しています。
sentence = "Python is easy to learn and powerful"
words = sentence.split(" ", 3)
print(words)
# 出力: ['Python', 'is', 'easy', 'to learn and powerful']
複数の区切り文字による分割
複数の異なる区切り文字で分割したい場合は、正規表現モジュールのre.split関数が便利です。この例ではセミコロン、カンマ、コロンのいずれかで文字列を分割しています。
import re
text = "apple;banana,orange:grape"
fruits = re.split("[;,:]", text)
print(fruits)
# 出力: ['apple', 'banana', 'orange', 'grape']
注意点
区切り文字が連続する場合
区切り文字が連続して現れる場合、その間には何も文字がないと解釈されるため、空の文字列がリストに含まれます。
text = "apple,,banana,,orange"
result = text.split(",")
print(result)
# 出力: ['apple', '', 'banana', '', 'orange']
文字列の先頭や末尾に区切り文字がある場合
文字列の先頭や末尾に区切り文字がある場合も、その位置に空の文字列が生成されます。
text = ",apple,banana,orange,"
result = text.split(",")
print(result)
# 出力: ['', 'apple', 'banana', 'orange', '']
空白を削除したい場合
空白文字で分割した後に、空の要素を除去したい場合はリスト内包表記を使って空でない要素だけを取り出すことができます。
text = " apple banana orange "
result = [word for word in text.split() if word]
print(result)
# 出力: ['apple', 'banana', 'orange']
空白を削除する方法は以下も参照
なお、空文字列や空白だけの文字列を None デリミタで分割すると [] が返されます。
empty_text = ""
result = empty_text.split()
print(result)
# 出力: []
whitespace_only = " \\t \\n "
result = whitespace_only.split()
print(result)
# 出力: []
まとめ
pythonのsplit()メソッドは、文字列を簡単に分割できる便利な機能です。基本的な使い方から応用まで幅広く活用できます。
- 基本形:string.split() – 空白文字で分割
- 区切り文字指定:string.split(separator) – 指定した区切り文字で分割
- 分割回数制限:string.split(separator, maxsplit) – 分割回数を制限
- 複数の区切り文字:re.split(pattern, string) – 複数の区切り文字で分割
テキスト処理やデータ解析において、split()メソッドはとても役立つツールですので、ぜひ活用してください。