Python で WhiteSpace によって文字列を分割する

Rayven Esplanada 2023年1月30日
  1. Python で文字列 split() メソッドを使用して文字列を分割する
  2. Python で re.split() を使用して文字列を分割する
Python で WhiteSpace によって文字列を分割する

このチュートリアルでは、Python で区切り文字として文字列を空白で分割する方法を示します。

Python で文字列を分割するということは、使用されている区切り文字または区切り文字に応じて、単一の文字列を文字列の配列に分割することを意味します。

例えば、Hello, World! I am here. と初期化された文字列が存在する場合、区切り文字として空白で分割すると、次の出力になります。

["Hello,", "World!", "I", "am", "here."]

Python で文字列 split() メソッドを使用して文字列を分割する

組み込みの Python 文字列メソッド split() は、空白を使用して文字列を分割するための完璧なソリューションです。デフォルトでは、split() メソッドは、空白を区切り文字として使用して元の文字列を分割した結果の部分文字列の配列を返します。

たとえば、同じ文字列の例 Hello, World! I am here. を使用してみましょう。split() メソッドを使用して文字列を部分文字列の配列に分割します。

string_list = "Hello, World! I am here.".split()

print(string_list)

出力は期待どおりです。

["Hello,", "World!", "I", "am", "here."]

さらに、split() メソッドは先頭と末尾の空白を自動的に削除し、それらを単一の空白区切り文字として扱います。

前の例を変更して、ランダムな先頭、末尾、および連続する空白を含めましょう。

string_list = "      Hello,   World! I am     here.   ".split()

print(string_list)

split() メソッドが自動的に処理する別のシナリオは、空白文字以外に、\t\n、および\r で示されるタブ、改行、およびキャリッジリターンです。上記の空白形式も、区切り文字およびトリミングの対象と見なされます。

出力:

['Hello,', 'World!', 'I', 'am', 'here.']

例えば:

string_list = " Hello,   World! I am here.\nI am also\there too,\rand here.".split()

print(string_list)

出力:

['Hello,', 'World!', 'I', 'am', 'here.', 'I', 'am', 'also', 'here', 'too,', 'and', 'here.']

これらの要因を考慮すると、関数を実行する前にすべての空白を明示的にトリミングすることを心配する必要はありません。これは便利な機能です。

Python で re.split() を使用して文字列を分割する

Python RegEx(正規表現)モジュール re には、組み込みの split() メソッドの代わりに使用できる事前定義された split() 関数もあります。ただし、re.split() は、組み込みの split() メソッドと比較してパフォーマンスが遅いことに注意してください。

re.split() 関数は、正規表現文字列と分割関数を実行する文字列の 2つの主要なパラメーターを受け入れます。空白を表す RegEx キーワードは\s です。\s は、上記のものを含むすべてのタイプの空白の照合です(\n\t\r\f)。

たとえば、文字列を宣言し、re.split() を実行して、それらを部分文字列の配列に分割します。末尾と先頭の空白を考慮に入れるには、RegEx 文字列に+ 記号を追加して、1つ以上の連続する空白を単一のグループとして一致させます。

また、キーワード r を RegEx 文字列に追加して、Python がエスケープシーケンスを適切に処理するようにします。

import re

exStr = "Hello, World!\nWelcome\tto my   tutorial\rarticle."

print(re.split(r"\s+", exStr))

Python で文字列を分割するには、re.split() の代わりに re.findall() を使用する

または、re.findall() を使用することもできます。findall() 関数は、split() とは正反対に機能します。この関数は、指定された RegEx 文字列に一致するすべての部分文字列を検索しますが、split() メソッドは RegEx 文字列を区切り文字として使用します。

findall() 関数を使用して空白を使用して文字列を分割するには、文字(\S)を大文字にして空白キーワード\s を否定します。findall() は、split() と同じパラメータを受け入れます。

import re

exStr = "Hello, World!\nWelcome\tto my   tutorial\rarticle."

print(re.findall(r"\S+", exStr))

どちらの関数も同じ出力を生成します。

["Hello,", "World!", "Welcome", "to", "my", "tutorial", "article."]

要約すると、空白を区切り文字として使用して文字列を分割するための最良かつ最適な方法は、組み込みの split() メソッドです。文字列オブジェクトにアタッチされ、デフォルトで先頭と末尾の空白を考慮します。これを使用する場合も、正規表現の知識は必要ありません。

それ以外の場合は、re.split()re.findall()split() メソッドの代わりに使用できますが、どちらの関数も組み込みの split() メソッドよりもパフォーマンスが遅くなります。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python String