[英]Python regex to replace double backslash with single backslash
我试图用一个反斜杠替换所有双反斜杠。 我想用'class=\\\\"highlight'
替换'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
为什么不使用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
由于转义字符很复杂,您仍然需要对其进行转义,以便它不会转义'
你在字符串中只有一个反斜杠:
>>> string = 'class=\\"highlight'
>>> print string
class=\"highlight
现在让我们再放一个
>>> string = 'class=\\\\"highlight'
>>> print string
class=\\"highlight
然后再次删除它
>>> print re.sub('\\\\\\\\', r'\\', string)
class=\"highlight
我刚刚意识到这可能是最简单的答案:
import os
os.getcwd()
以上输出带有\\(2个反斜杠)的路径
但是如果你用打印函数包装它,即print(os.getcwd())
它将输出 2 条斜线和 1 条斜线,这样你就可以复制并粘贴到地址栏中!
只需使用 .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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.