2017-05-31 6 views
-1

私は次のコードを実行していましたが、わかりません。re.splitがここで文字列をどのように分割しているかわかりません。pythonのre.splitコード

lines = ["surname: Obama, prename: Barack, profession: president", "surname: 
Merkel, prename: Angela, profession: chancellor"] 
for line in lines: 
    re.split(",* *\w*: ", line) 
['', 'Obama', 'Barack', 'president'] 
['', 'Merkel', 'Angela', 'chancellor'] 
+0

希望の結果は何ですか? – RomanPerekhrest

+0

あなたは**質問をする必要があります**またはあなたの投稿は閉鎖されます。 –

答えて

2

re.split()は、Python正規表現ライブラリ(re)に関連付けられたsplit()関数です。

この場合、この関数は、re.split()関数に示されているパターンと一致する行の部分文字列を探しています。

パターン:次の方法で",* *\w*: "ブレイクアウト:

surname:

, prename:

, profession:

:のようなものを:

",* > matches zero OR more commas 
* > matches zero OR more spaces 
\w* > matches zero OR more word characters (0-9, a-z, A-Z, _) 
: " > matches a colon followed by a space 

基本的には、それが見つけようとします

これらのパターンが見つかった場合は、そのパターンがラインから取り除かれ、リストに示された値が残されます。空の文字列''がリストの最初の位置にあるのは、split()関数に空文字列が含まれている場合です。分割パターンが文字列の最初または最後の要素である場合です。

1

のは、documentationを見てみましょう、

re.split(pattern, string, maxsplit=0, flags=0)
がここでやっているかを理解するには、次の

スプリットパターンの出現によって文字列を。

あなたの例では、あなたのテキスト内のすべて",* *\w*: "を探して、結果として得られるテキスト間の区切り文字として使用します。

使用しているパターンは,の任意の数とそれに続く任意の数の空白文字、任意の数の単語文字、それに続く:と空白文字を探しています。

例:これは、 surname:Obama, prename:Barack, profession:president (イタリック:削除される区切り文字、太字:リストの結果の部分)を意味します。ご覧のとおり、文字列の先頭に直接一致するものがあり、空の文字列''を分割し、その後に:の後に3つのエントリが続きます。それはまさにあなたの結果リストが言うことです。

関連する問題