Python re.sub回参考不回引用
我有以下几点:
<text top="52" left="20" width="383" height="15" font="0"><b>test</b></text>
我有以下几点:
fileText = re.sub("<b>(.*?)</b>", "\1", fileText, flags=re.DOTALL)
其中fileText是我在上面发布的string。 当我运行正则expression式replace后,我打印出fileText
,我回来了
<text top="52" left="20" width="383" height="15" font="0"></text>
而不是预期的
<text top="52" left="20" width="383" height="15" font="0">test</text>
现在我对正则expression式很熟练,我知道它应该工作,事实上我知道它匹配正确,因为我可以在groups
看到它,当我做search和打印出的groups
但我是新来的python和困惑至于为什么它不正确地处理后面的引用
您需要在这里使用原始string ,以便反斜杠不会作为转义字符处理:
>>> import re >>> fileText = '<text top="52" left="20" width="383" height="15" font="0"><b>test</b></text>' >>> fileText = re.sub("<b>(.*?)</b>", r"\1", fileText, flags=re.DOTALL) >>> fileText '<text top="52" left="20" width="383" height="15" font="0">test</text>' >>>
注意"\1"
是如何改变为r"\1"
。 虽然是一个非常小的变化(一个字符),但它有很大的作用。 见下文:
>>> "\1" '\x01' >>> r"\1" '\\1' >>>