替换所有的“\&引用;加上\\&引用;python
有人知道如何用python中的替换所有的“\&引用;加上\\&引用;python,python,regex,Python,Regex,有人知道如何用python中的\\替换所有\? 我试过: re.sub('\','\\',string) 但由于逃跑的顺序,它把事情搞砸了。 有人知道我的问题的答案吗?你只需要避开字符串中的反斜杠:(也不需要正则表达式的东西) 你应该做: re.sub(r'\\', r'\\\\', string) Asr'\'不是有效的字符串 顺便说一句,你应该总是在正则表达式中使用原始(r')字符串,因为很多事情都是用反斜杠来完成的。你或者需要re.sub(“\\\\”,“\\\\”,“\\\\”,st
\\
替换所有\
?
我试过:
re.sub('\','\\',string)
但由于逃跑的顺序,它把事情搞砸了。
有人知道我的问题的答案吗?你只需要避开字符串中的反斜杠:(也不需要正则表达式的东西) 你应该做:
re.sub(r'\\', r'\\\\', string)
Asr'\'
不是有效的字符串
顺便说一句,你应该总是在正则表达式中使用原始(
r'
)字符串,因为很多事情都是用反斜杠来完成的。你或者需要re.sub(“\\\\”,“\\\\”,“\\\\”,string)
或者re.sub(r'\\\”,r'\\\\\\\,string)
,因为你需要对每个斜杠转义两次。。。一次用于字符串,一次用于正则表达式
>>> whatever = r'z\w\r'
>>> print whatever
z\w\r
>>> print re.sub(r"\\",r"\\\\", whatever)
z\\w\\r
>> print re.sub("\\\\","\\\\\\\\",whatever)
z\\w\\r
您应该避开反斜杠,而且对于这个简单的操作,您不需要正则表达式:
>>> my_string = r"asd\asd\asd\\"
>>> print(my_string)
asd\asd\asd\\
>>> replaced = my_string.replace("\\", "\\\\")
>>> print(replaced)
asd\\asd\\asd\\\\
@gnibbler
r'\'
无效。@JBernardo,嘿,我刚刚意识到有人删除了那条评论,为什么不直接使用str方法而不是regex呢?例如,string.replace('\\',r'\\')
@gnibbler正如@Ignacio所写,这可能不是OP真正的问题。。。也许他在windows路径或CRLF@JBernardo,啊,在这种情况下,告诉OP在windows路径中“/”可以正常工作(而不是“\”)可能有帮助,也可能没有帮助:)这不起作用。您需要re.sub(“\\\”,“\\\\”,string)或re.sub(r'\\',r'\\\',string),因为每个斜杠需要转义两次。。。一次用于字符串,一次用于正则表达式。这不起作用。您需要re.sub(“\\\”,“\\\\”,string)或re.sub(r'\\',r'\\\',string),因为每个斜杠需要转义两次。。。一次用于字符串,一次用于正则表达式。仍然不起作用。您试图将literal\替换为特殊字符的正则表达式转义的第一部分,因此它抱怨:“错误:正则表达式意外结束”@ecounysis您完全正确。我没有试过翻译…:(这在解释器中确实有效,但在程序中运行时失败。奇怪。可能是我在做一些愚蠢的事情。
>>> my_string = r"asd\asd\asd\\"
>>> print(my_string)
asd\asd\asd\\
>>> replaced = my_string.replace("\\", "\\\\")
>>> print(replaced)
asd\\asd\\asd\\\\