【Python】正規表現(re.split)を使って文字列を複数の区切り文字で分割する方法
Pythonの標準ライブラリであるreモジュールを使うと、カンマやセミコロンなど複数の区切り文字をまとめて指定し、文字列を一度に分割できます。ポイントは、re.split()関数の第1引数に、区切りたい文字を正規表現パターンとして渡すことです。
基本的な使い方
次の例では、セミコロン(;)、カンマ(,)、アスタリスク(*)、改行(\n)、コロン(:)という5種類の区切り文字で文字列を分割しています。
import re
s = 'Beautiful; Soup\n is, good: Python* application'
result = re.split(r'; |, |\*|\n|:', s)
print(result)
実行結果
['Beautiful', 'Soup', ' is', 'good', ' Python', ' application']
正規表現パターンの解説
;… 「; 」(セミコロン+半角スペース)で分割,… 「, 」(カンマ+半角スペース)で分割\*… アスタリスク「*」で分割(正規表現では特殊文字のためバックスラッシュでエスケープが必要)\n… 改行コードで分割:… コロン「:」で分割
これらのパターンを|(OR条件)でつなぐことで、1回のre.split()呼び出しで複数の区切り文字すべてに対応できます。生文字列リテラル(r'')を使うと、エスケープ処理が読みやすくなるのでおすすめです。
文字クラスを使った簡潔な書き方
区切り文字がすべて1文字でよい場合は、文字クラス[]を使うとさらに簡潔に記述できます。
import re
s = 'Beautiful; Soup\n is, good: Python* application'
result = re.split(r'[;,\*\n:]', s)
print(result)
# ['Beautiful', ' Soup', ' is', ' good', ' Python', ' application']
ただし、この方法では区切り文字の直後にスペースが残ります。「; 」のように区切り文字と一緒に空白も取り除きたい場合は、冒頭の例のようにパターンを個別に指定するか、[x.strip() for x in result]のように後からstrip()で前後の空白を除去するとよいでしょう。
-
Pythonで改行コードを基準に文字列を分割する方法
Pythonで改行コードを基準に文字列を分割する方法 Pythonでは、文字列クラスに標準で用意されている splitlines() メソッドを使うことで、改行を区切りとして文字列を簡単にリストへ分割できます。ここでは、代表的な2つの方法とその違いを解説します。 1. splitlines() メソッドを使う方法 splitlines() は、改行の位置で文字列を自動的に分割し、各行を要素とするリストを返します。最もシンプルで推奨される方法です。 >>> some multi line string.splitlines() [some, multi line, strin
-
Pythonで区切り文字(str)を指定して文字列を分割する方法
Pythonで文字列を特定の区切り文字で分割する方法は、主に2つあります。1つは文字列クラスの組み込みメソッド split() を使う方法、もう1つは正規表現モジュール re の re.split() を使う方法です。それぞれの使い方を詳しく見ていきましょう。 split()メソッドで文字列を分割する PythonのStringクラスには split() というメソッドが用意されており、区切り文字をオプション引数として指定できます。引数を省略した場合、デフォルトの区切り文字は空白(ホワイトスペース)になります。 >>> aa-ab-ca.split(-) [aa, ab, c