2017-10-10 6 views
0
time_sentences = ["Monday: The doctor's appointment is at 2:45pm.", 
        "Tuesday: The dentist's appointment is at 11:30 am.", 
        "Wednesday: At 7:00pm, there is a basketball game!", 
        "Thursday: Be back home by 11:15 pm at the latest.", 
        "Friday: Take the train at 08:10 am, arrive at 09:00am."] 

df['text'].str.replace(r'(\w+day\b)', lambda x: x.group(0)[:3]) 

通知は、私たちはグループのために1を渡した場合、我々は範囲外としてエラーを取得する必要があります期待していますそのようなグループは好きではありませんが、そのエラーは発生していません。グループは

df['text'].str.replace(r'(\w+day\b)', lambda x: x.group(1)[:3]) 

グループに2を渡すと、範囲外のエラーが発生します。

df['text'].str.replace(r'(\w+day\b)', lambda x: x.group(2)[:3]) 

何らかの理由がありますか?

+0

へのアクセスにエラーをスローする必要がありパターン。 'r '(\ w + day \ b)'パターンには1つの捕捉グループしか含まれていないので、' group(1) 'は一致したときにうまく動作し、' group(2) 'は例外試合。 –

答えて

2

()キャプチャグループはキャプチャされた文字を最初のグループインデックスに格納するためです。 .group()または.group(0)は、一致するすべての文字を返す必要があります。インデックス1またはnは、対応するキャプチャグループ1またはnでキャプチャされたすべての文字を返します。

正規表現からそれらの()キャプチャグループを削除し、それは `に(...)` sは `エスケープ括弧の対の数に等しい)(グループ`の数x.group(1)

+0

説明をいただきありがとうございます – venkysmarty