10

我试图用一个反斜杠替换所有双反斜杠。我想替换'class=\\"highlight''class=\"highlight'. 我认为python将'\\'其视为一个反斜杠和r'\\+'一个带有两个反斜杠的字符串。但是当我尝试

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

4 回答 4

15

为什么不使用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

由于转义字符很复杂,您仍然需要对其进行转义,使其不会转义'

于 2013-05-21T15:42:46.860 回答
2

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

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

现在让我们再放一个

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

然后再次删除

>>> print re.sub('\\\\\\\\', r'\\', string)
class=\"highlight
于 2013-05-21T15:50:54.027 回答
2

只需使用 .replace() 两次!

我有以下路径: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('**', '\\')

第一个操作为每个 \ 创建 **,第二个操作转义第一个斜杠,将 ** 替换为单个\.

结果:

C:**Users**z0044wmy**Desktop**PMI APP GIT**pmi-app**GENERATED_REPORTS
C:\Users\z0044wmy\Desktop\PMI APP GIT\pmi-app\GENERATED_REPORTS
于 2021-08-03T08:16:19.857 回答
0

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

import os
os.getcwd()

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

但是,如果你用打印功能包装它,即 print(os.getcwd()) 它会输出 2 个斜线和 1 个斜线,这样你就可以复制并粘贴到地址栏中!

于 2021-05-11T13:24:17.500 回答