用Python将单反斜杠替换为双反斜杠
我需要用模式匹配中的python将用Python将单反斜杠替换为双反斜杠,python,regex,Python,Regex,我需要用模式匹配中的python将\替换为\。 例如,$\a\b\c$$应匹配并替换为$$\\a\\b\\c$$ 我无法使用正则表达式查找匹配项 >>> import re >>> p = re.compile("\$\$([^$]+)\$\$") >>> a = "$$\a\b\c$$" >>> m = p.search(a) >>> m.group(1) '\x07\x08\\c' 我不能简单地将输入
\
替换为\
。
例如,$\a\b\c$$
应匹配并替换为$$\\a\\b\\c$$
我无法使用正则表达式查找匹配项
>>> import re
>>> p = re.compile("\$\$([^$]+)\$\$")
>>> a = "$$\a\b\c$$"
>>> m = p.search(a)
>>> m.group(1)
'\x07\x08\\c'
我不能简单地将输入作为原始字符串,例如a=r'$$\a\b\c$$'
,因为它是通过标记处理器自动处理的。
我还发现我无法使用替换方法:
>>> a.replace('\\','\\\\')
'$$\x07\x08\\\\c$$'
如何解决此问题?使用单反斜杠拆分字符串,然后使用双反斜杠连接结果列表
s = r'$$\a\b\c$$'
t = r'\\'.join(s.split('\\'))
print('%s -> %s' % (s, t))
您遇到问题的原因是因为您输入的字符串是
$$\a\b\c$$$$
,python将其翻译为$$\x07\x08\\c$$$'
,而字符串中唯一的反斜杠实际上在“\c”段中。处理这个问题的最佳方法是输入一个这样的字符串
a=r'$$\a\b\c$$'
这将告诉python将字符串文本转换为原始字符。如果您正在从文件中读取,这将自动为您完成 您有权访问
a
的初始化吗?如果是,请尝试a=r'$$\a\b\c$$'
(请参阅)@BorrajaX:No,它是正则表达式的返回值。Hmmmmpffrrr。。。大昂。。。你能把计算a
的部分贴出来吗?一旦你的字符串被计算,就没有回头路了(它不知道\x07
来自\a
。也许在你得到\a
之前可以做些什么?我找到了万能的Martijn Pieters的答案()。虽然你不会喜欢它的……但如果他这么说,那可能是对的。。。