在替换vs正则表达式中使用\ s

时间:2013-09-17 02:24:53

标签: regex replace newline whitespace

在学习python时,我在处理多行文件时得到了我的第一个真正的python stumper。看起来,替换方法中的\s不会删除换行符,其中\s在正则表达式中使用时会删除换行符。我可以使用替换\n来删除换行符,但我很担心\s的定义对于替换方法和正则表达式是不同的。这是真的吗?

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

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

1 个答案:

答案 0 :(得分:2)

string.replacere.sub不同。前者替换了你要求替换的子串,后者替换了你给它的 pattern 出现的子串。

这种设计是有意的,可能不会给你带来麻烦。毕竟,一个是关于字符串的方法,另一个是关于正则表达式的方法。

这是另一个你可能感兴趣的例子:

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

我认为这是非常明智的。是的,其他语言确实需要replace中的正则表达式或字符串,但Python实际上保持它们不同!