2024-09-30 18:16:35 发布
网友
我有以下一行:
b = re.sub('^xMain (\S+)/y1,/y0 (\S+ )(.*)$', 'xMain \2\1\3', a)
其中a是:
为什么b会变成{}? 我的目的是颠倒一个名字。在Regexbuddy中,这可以正常工作,但在python2.7中不行。在
b
您看到不可打印字符是因为\2\1\3在常规python字符串中也有意义,如八进制转义码:
\2\1\3
>>> '\2' '\x02' >>> 'xMain \2\1\3' 'xMain \x02\x01\x03'
它们从来没有像写的那样到达re.sub()函数。在
re.sub()
请改用原始字符串文本:
注意r'...'字符串。在原始字符串中,\...不解释转义码,保留后面的引用供re模块使用:
r'...'
\...
re
>>> r'xMain \2\1\3' 'xMain \\2\\1\\3'
另一种方法是将反斜杠加倍,以避免逃逸:
b = re.sub('^xMain (\S+)/y1,/y0 (\S+ )(.*)$', 'xMain \\2\\1\\3', a)
无论是哪种方式,您的替换模式现在可以按预期工作:
>>> import re >>> a = 'xMain Buchan/y1,/y0 Angus Sub1' >>> re.sub('^xMain (\S+)/y1,/y0 (\S+ )(.*)$', r'xMain \2\1\3', a) 'xMain Angus BuchanSub1'
您看到不可打印字符是因为
\2\1\3
在常规python字符串中也有意义,如八进制转义码:它们从来没有像写的那样到达
re.sub()
函数。在请改用原始字符串文本:
^{pr2}$注意
r'...'
字符串。在原始字符串中,\...
不解释转义码,保留后面的引用供re
模块使用:另一种方法是将反斜杠加倍,以避免逃逸:
无论是哪种方式,您的替换模式现在可以按预期工作:
相关问题 更多 >
编程相关推荐