Pythonの正規表現を使って改行コードで文字列を分割する方法
Pythonでは、reモジュールのre.split()関数と正規表現パターンを組み合わせることで、文字列を改行コード(\n)を区切りとして簡単に分割できます。複数行にわたるテキストデータを行ごとに処理したい場合などに非常に便利な手法です。
基本的な使い方
以下のコードは、正規表現パターン[\n]を使用して、文字列内の改行コードの位置で文字列を分割します。
import re s = """I find Tutorialspoint useful""" print(re.split(r"[\n]", s))
実行結果
このコードを実行すると、以下のようなリストが出力されます。
['I find', ' Tutorialspoint', ' useful']
連続した改行を1つの区切りとして扱う場合
空行が含まれるなど、改行コードが連続している場合には、量指定子+を使ったパターンr"\n+"が便利です。これにより、1つ以上の連続する改行コードをまとめて1つの区切りとして処理でき、結果のリストに不要な空文字列が混入するのを防げます。
import re s = """apple banana orange""" print(re.split(r"\n+", s))
実行結果:
['apple', 'banana', 'orange']
補足:splitlines()メソッドとの違い
単純に行ごとに分割したいだけであれば、正規表現を使わずに文字列のsplitlines()メソッドを利用する方法もあります。splitlines()は\n以外にも\r\nや\rなど、さまざまな改行コードに自動的に対応してくれるため、OS間で改行コードが異なるテキストを扱う場合に特に有効です。
s = """line1 line2 line3""" print(s.splitlines())
用途に応じてre.split()とsplitlines()を使い分けることで、より柔軟かつ堅牢なテキスト処理が可能になります。
-
Pythonの正規表現を使って文字列から数字のみを抽出・マッチングする方法
Pythonでは、標準ライブラリの re モジュールを使うことで、正規表現によるパターンマッチングが簡単に行えます。文字列から「数字のみ」を取り出したい場合は、メタ文字 \d(任意の1桁の数字に一致)を使用します。ここでは、代表的な2つの方法——re.search() と re.findall() を使った例を紹介します。なお、コードはPython 3系の記法に準拠しています。例1:re.search() で最初に見つかった数字の並びを取得する次のコードは、指定した文字列の中から最初に出現する連続した数字(1桁以上)を検索し、マッチオブジェクトとして返します。import re m = re
-
Pythonで正規表現を使って空白以外の文字にマッチさせる方法
Pythonで正規表現を使って文字列中の「空白以外の文字」を照合するには、\S(大文字のS)という特殊シーケンスを使用します。\S はスペース・タブ・改行などの空白文字以外の任意の1文字にマッチし、+ を組み合わせることで、連続した空白以外の文字列(単語など)をまとめて取得できます。re.search() を使った例次のコードは、指定した文字列から最初に見つかった空白以外の文字の連なりを検索します。import re foo = re.search(r\S+, Need for Speed 2) print(foo)出力<re.Match object; span=(0, 4), mat