用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' 我不能简单地将输入

我需要用模式匹配中的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=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的答案()。虽然你不会喜欢它的……但如果他这么说,那可能是对的。。。