アイテム 1、アイテム 2、およびアイテム 3 を含む html ファイルで作業しています。アイテム 2 の後に来るすべてのテキストを削除したいです。ファイル内のアイテム 2 は次のように見つけることができます。
Item2= re.compile (r'(Item 2)',re.I|re.S)
Item2match= Item2.findall(file)
しかし、その後のテキストを削除する方法がわかりません。
文字列メソッドを使用して html テキストを分割し、最初の部分を取ります。str.partition()
はるかに簡単に動作します:
file.partition('Item 2')[0]
Item 2
テキストも保持したい場合は、次を使用します。
''.join(file.partition('Item 2')[:2])
ここで正規表現を使用する必要はありません。あなたはリテラルテキストと一致しています。正規表現は非常に表現力が高く、強力なツールですが、より簡単な代替手段がある場合は使用しないでください。
デモ:
>>> 'Some text with Item 2 in it'.partition('Item 2')[0]
'Some text with '
>>> ''.join('Some text with Item 2 in it'.partition('Item 2')[:2])
'Some text with Item 2'
>>> re.sub(r'(?s)(?<=Item 2)(.*)', '', file)
例:
>>> s
'Item 2...feiugeogherger\nfjweifjwef\nsfjioweiefjwe'
>>> re.sub(r'(?s)(?<=Item 2)(.*)', '', s)
'Item 2'