Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换所有的“\&引用;加上\\&引用;python_Python_Regex - Fatal编程技术网

替换所有的“\&引用;加上\\&引用;python

替换所有的“\&引用;加上\\&引用;python,python,regex,Python,Regex,有人知道如何用python中的\\替换所有\? 我试过: re.sub('\','\\',string) 但由于逃跑的顺序,它把事情搞砸了。 有人知道我的问题的答案吗?你只需要避开字符串中的反斜杠:(也不需要正则表达式的东西) 你应该做: re.sub(r'\\', r'\\\\', string) Asr'\'不是有效的字符串 顺便说一句,你应该总是在正则表达式中使用原始(r')字符串,因为很多事情都是用反斜杠来完成的。你或者需要re.sub(“\\\\”,“\\\\”,“\\\\”,st

有人知道如何用python中的
\\
替换所有
\
? 我试过:

re.sub('\','\\',string)
但由于逃跑的顺序,它把事情搞砸了。
有人知道我的问题的答案吗?

你只需要避开字符串中的反斜杠:(也不需要正则表达式的东西)

你应该做:

re.sub(r'\\', r'\\\\', string)
As
r'\'
不是有效的字符串


顺便说一句,你应该总是在正则表达式中使用原始(
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\\\\