在学习python时,我在处理多行文件时得到了我的第一个真正的python stumper。看起来,替换方法中的\s
不会删除换行符,其中\s
在正则表达式中使用时会删除换行符。我可以使用替换\n
来删除换行符,但我很担心\s
的定义对于替换方法和正则表达式是不同的。这是真的吗?
s_clean = s.replace('\s', '')
import re
s_clean = re.sub(r'\s', '', s)
答案 0 :(得分:2)
是string.replace
与re.sub
不同。前者替换了你要求替换的子串,后者替换了你给它的 pattern 出现的子串。
这种设计是有意的,可能不会给你带来麻烦。毕竟,一个是关于字符串的方法,另一个是关于正则表达式的方法。
这是另一个你可能感兴趣的例子:
>>> import re
>>> s = "aaaa+b"
>>> s.replace("a+", "c")
'aaacb'
>>> re.sub(s, "a+", "c")
'c'
我认为这是非常明智的。是的,其他语言确实需要replace
中的正则表达式或字符串,但Python实际上保持它们不同!