Pythonで文字列を空白で分割する方法:split()と正規表現の使い方
Pythonでは、文字列を空白(スペース・タブ・改行など)で分割する場面がよくあります。ユーザー入力の解析やテキストデータの処理などがその代表例です。この記事では、空白で文字列を分割する代表的な2つの方法を、具体例とともにわかりやすく解説します。
方法1:split()メソッドを使う(おすすめ)
最もシンプルで一般的な方法は、文字列クラスに組み込まれた split() メソッドを使うことです。引数を指定しない場合、デフォルトの区切り文字として「空白文字」が使用され、連続した空白も自動的に適切に処理されます。
>>> "Please split this string".split()
['Please', 'split', 'this', 'string']
このように、元の文字列は単語ごとに分割されたリストになります。余分な空白が含まれていても、空の要素は生成されません。
>>> "Python 文字列 分割".split()
['Python', '文字列', '分割']
方法2:正規表現(re.split())を使う
より柔軟な制御が必要な場合は、標準ライブラリの re モジュールにある re.split() を利用できます。正規表現パターン \s+ を指定すると、「1個以上の連続した空白文字」を区切りとして分割できます。
>>> import re
>>> re.split(r'\s+', 'Please split this string')
['Please', 'split', 'this', 'string']
なお、正規表現エンジンの処理が挟まるため、単純な空白分割であれば split() メソッドの方が高速です。パフォーマンスが重要な場面ではこの点に注意しましょう。
使い分けのポイント
- 単純に空白で分割したい場合:
str.split()がベストです。高速でコードも簡潔になります。 - タブや改行など特定の空白だけを区切りたい、複雑な条件で分割したい場合:
re.split()の方が柔軟に対応できます。
補足:先頭・末尾の空白に注意
re.split(r'\s+', ...) を使う場合、文字列の先頭や末尾に空白があると、結果に空文字列が含まれることがあります。あらかじめ strip() で前後の空白を取り除いておくと安全です。
>>> re.split(r'\s+', ' hello world ')
['', 'hello', 'world', '']
>>> re.split(r'\s+', ' hello world '.strip())
['hello', 'world']
まとめ
Pythonで文字列を空白で分割するなら、split() メソッドが最も簡単かつ高速です。特殊な条件での分割が必要なときだけ re.split() を活用しましょう。日常的なテキスト処理では、まず split() を試すのがおすすめです。
-
Pythonで文字列が空白文字のみかどうか判定する方法|isspace()と正規表現の使い方
文字列が空白文字のみかどうかを判定する2つの方法 Pythonでは、文字列に空白文字(スペース、タブ、改行など)だけが含まれているかどうかを確認する方法が主に2つあります。1つ目は文字列メソッドの isspace() を使う方法、2つ目は標準ライブラリの re モジュールによる正規表現を使う方法です。 方法1:isspace() メソッドを使う isspace() は、文字列が空白文字のみで構成されており、かつ少なくとも1文字以上ある場合に True を返す便利なメソッドです。 s = \t\n print(s.isspace()) # True s = hello pri
-
Pythonで文字列が英数字のみかどうかを判定する方法【isalnum()と正規表現】
Pythonでは、文字列が英数字(アルファベットと数字)のみで構成されているかどうかを簡単に判定できます。主な方法は2つあります。文字列クラスに組み込まれている isalnum() メソッドを使う方法と、正規表現を使う方法です。 isalnum()メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、文字列が英数字のみで構成されている場合に True を、記号などが含まれる場合には False を返します。 >>> 123abc.isalnum() True >>>