我试图用一个反斜杠替换所有双反斜杠。我想替换' 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
答案 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('**', '\\')
替换 **。
结果:
\