1

在学习 python 时,我在处理多行文件时得到了我的第一个真正的 python stumper。似乎\s在替换方法中不删除换行符,在\s正则表达式中使用时删除换行符。我可以很好地使用replace删除换行符\n,但我很困扰\sreplace方法和正则表达式的定义不同。真的是这样吗?

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

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

1 回答 1

2

string.replace不同于re.sub. 前者替换您要求替换的子字符串,后者替换您给它的模式出现的子字符串。

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

这是另一个您可能会感兴趣的示例:

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

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

于 2013-09-17T02:30:54.277 回答