Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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()で前後の空白を除去するとよいでしょう。

  1. Pythonで改行コードを基準に文字列を分割する方法

    Pythonで改行コードを基準に文字列を分割する方法 Pythonでは、文字列クラスに標準で用意されている splitlines() メソッドを使うことで、改行を区切りとして文字列を簡単にリストへ分割できます。ここでは、代表的な2つの方法とその違いを解説します。 1. splitlines() メソッドを使う方法 splitlines() は、改行の位置で文字列を自動的に分割し、各行を要素とするリストを返します。最もシンプルで推奨される方法です。 >>> some multi line string.splitlines() [some, multi line, strin

  2. Pythonで区切り文字(str)を指定して文字列を分割する方法

    Pythonで文字列を特定の区切り文字で分割する方法は、主に2つあります。1つは文字列クラスの組み込みメソッド split() を使う方法、もう1つは正規表現モジュール re の re.split() を使う方法です。それぞれの使い方を詳しく見ていきましょう。 split()メソッドで文字列を分割する PythonのStringクラスには split() というメソッドが用意されており、区切り文字をオプション引数として指定できます。引数を省略した場合、デフォルトの区切り文字は空白(ホワイトスペース)になります。 >>> aa-ab-ca.split(-) [aa, ab, c