私は "</html>"タグの後のすべてをつかんでそれを削除しようとしていますが、私のコードは何もしていないようです。 .replace()
は正規表現をサポートしていませんか?
z.write(article.replace('</html>.+', '</html>'))
いいえ。Pythonの正規表現は re
モジュールによって処理されます。
article = re.sub(r'(?is)</html>.+', '</html>', article)
@Ignácioは正しい、+ 1、もっと例を挙げよう。
正規表現を使ってテキストを置き換えるには、 re.sub 関数を使います。
sub(pattern、repl、string [、count、flags])
pattern
の非永続インスタンスを、string
として渡されたテキストで置き換えます。一致を分析して特定のグループキャプチャに関する情報を抽出する必要がある場合は、必要に応じて、関数をstring
引数に渡します。 詳細はこちら 。
例
>>> import re
>>> re.sub(r'a', 'b', 'banana')
'bbnbnb'
>>> re.sub(r'/\d+', '/{id}', '/andre/23/abobora/43435')
'/andre/{id}/abobora/{id}'
正規表現にre
モジュールを使うことができますが、正規表現はあなたが望むものにはおそらくやり過ぎです。私は何かを試すかもしれません
z.write(article[:article.index("</html>") + 7]
これははるかにクリーンで、正規表現ベースのソリューションよりはるかに速いはずです。
このような場合、re
モジュールを使うのがやり過ぎる場合は、split
(またはrsplit
)メソッドを次のように使用してください。
se='</html>'
z.write(article.split(se)[0]+se)
例えば、
#!/usr/bin/python
article='''<html>Larala
Ponta Monta
</html>Kurimon
Waff Moff
'''
z=open('out.txt','w')
se='</html>'
z.write(article.split(se)[0]+se)
out.txt
を
<html>Larala
Ponta Monta
</html>