【发布时间】:2011-12-23 10:03:40
【问题描述】:
我正在尝试让re.sub 替换指定为例如值的模式
for lines in f:
pattern='\${2}'+key[0]+'\${2}'
re.search(pattern,lines)
这将返回找到模式的行。例如,如果得到,这是测试返回之一
这是一个 $$test$$
我遇到的问题是当我执行以下操作时
re.sub(pattern,key[1],lines)
什么都没有发生。我错过了什么?欲了解更多信息key[0]=test 和key[1]=replace
所以我想做的是每当遇到“$$test$$”时,它都会用“replace”替换它。我找到“$$test$$”没有问题,但由于某种原因re.sub 没有替换它。
【问题讨论】:
-
当您需要在字符串中存储反斜杠时,最好使用双反斜杠形式。在您的情况下,它在 Python 中仍然有效,因为美元符号在以反斜杠为前缀时没有特殊含义,并且因为在这种情况下 Python 维护两个字符,但在其他语言中编写
'\$'将仅表示'$'。当某人正在阅读一个字符串并发现一个反斜杠时,需要一些特殊的东西或另一个反斜杠。如果您需要在字符串中使用多个反斜杠,那么您应该使用原始字符串... -
对于登陆这里并遇到一般
re.sub问题的人,make sure 您将re.IGNORECASE作为flags=参数传递,而不是count参数。