Python正则表达式用单反斜杠替换双反斜杠

时间:2013-05-21 15:39:31

标签: python regex

我试图用一个反斜杠替换所有双反斜杠。我想替换' class = \\"突出显示'与' class = \"突出显示'。我以为python对待' \\'作为一个反斜杠和r' \\ +'作为带有两个反斜杠的字符串(这些是带有SO转义的3和4个反斜杠)。但是当我尝试

In [5]: re.sub(r'\\+', '\\', string)
sre_constants.error: bogus escape (end of line)

所以我尝试用原始字符串切换替换字符串:

In [6]: re.sub(r'\\+', r'\\', string)
Out [6]: 'class=\\"highlight'

这不是我需要的。所以我在原始字符串中只尝试了一个反斜杠:

In [7]: re.sub(r'\\+', r'\', string)
SyntaxError: EOL while scanning string literal    

4 个答案:

答案 0 :(得分:9)

为什么不使用string.replace()

>>> s = 'some \\\\ doubles'
>>> print s
some \\ doubles
>>> print s.replace('\\\\', '\\')
some \ doubles

或者使用“原始”字符串:

>>> s = r'some \\ doubles'
>>> print s
some \\ doubles
>>> print s.replace('\\\\', '\\')
some \ doubles

由于转义字符很复杂,您仍然需要将其转义,因此它不会转义'

答案 1 :(得分:1)

你在字符串中只有一个反斜杠:

>>> string = 'class=\\"highlight' 
>>> print string
class=\"highlight

现在让我们再放一个

>>> string = 'class=\\\\"highlight' 
>>> print string
class=\\"highlight

然后再将其删除

>>> print re.sub('\\\\\\\\', r'\\', string)
class=\"highlight

答案 2 :(得分:0)

我刚刚意识到这可能是最简单的答案:

import os
os.getcwd()

上面输出了一个带有\(2个反斜杠)的路径

但是如果你用打印功能包装它,即, print(os.getcwd()) 它将输出带有 1 个斜杠的 2 个斜杠,以便您可以复制并粘贴到地址栏中!

答案 3 :(得分:0)

只需使用 .replace() 两次!

我有以下路径:i

要将 \ 转换为单个反斜杠,我只执行了以下操作:

C:\\Users\\XXXXX\\Desktop\\PMI APP GIT\\pmi-app\\niton x5 test data

第一个操作为每个 \ 创建 **,第二个操作转义第一个斜杠,用单个 path_to_file = path_to_file.replace('\\','*') path_to_file = path_to_file.replace('**', '\\') 替换 **。

结果:

\