1

Python を学習しているときに、複数行のファイルを処理するときに、最初の本物の Python スタンパーを取得しました。\sreplace メソッドでは改行が削除されないようです\s。正規表現で使用すると改行が削除されます。改行はreplaceでちゃんと消せますが、replaceメソッドと正規表現で\nの定義が違うので困っています。\sこれは本当にそうですか?

s_clean = s.replace('\s', '')

import re
s_clean = re.sub(r'\s', '', s)
4

1 に答える 1

2

はいstring.replaceとは異なりre.subます。前者は置換を要求した部分文字列を置換し、後者は指定したパターンの出現箇所である部分文字列を置換します。

このデザインは意図的なものであり、おそらく問題になるものではありません。結局のところ、1 つは文字列に対するメソッドであり、もう 1 つは正規表現に対するメソッドです。

興味深いと思われる別の例を次に示します。

>>> import re
>>> s = "aaaa+b"
>>> s.replace("a+", "c")
'aaacb'
>>> re.sub(s, "a+", "c")
'c'

これはかなり理にかなっていると思います。はい、他の言語が正規表現または文字列のいずれかを期待しているのは事実ですreplaceが、Python は実際にはそれらを区別しています!

于 2013-09-17T02:30:54.277 に答える