当前位置: 首页 > 知识库问答 >
问题:

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

芮博厚
2023-03-14

我正在尝试用单个反斜杠替换所有双反斜杠。我想将'class=\\"亮点'替换为'class=\"亮点'。我以为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    

共有3个答案

松刚豪
2023-03-14

只需使用 .replace() 两次!

我有以下路径:C:\\用户\\XXXXX\\桌面\\PMI APP GIT\\pmi-app\\niton x5测试数据

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

path_to_file = path_to_file.replace('\\','*')
path_to_file = path_to_file.replace('**', '\\')

第一个操作为每一个\创建**,第二个操作转义第一个斜杠,用单个< code>\替换**。

结果:

C:**Users**z0044wmy**Desktop**PMI APP GIT**pmi-app**GENERATED_REPORTS
C:\Users\z0044wmy\Desktop\PMI APP GIT\pmi-app\GENERATED_REPORTS
钱震博
2023-03-14

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

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

现在让我们把另一个放在那里

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

然后再次将其移除

>>> print re.sub('\\\\\\\\', r'\\', string)
class=\"highlight
范承望
2023-03-14

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

由于转义字符很复杂,您仍然需要转义它,这样它就不会转义

 类似资料:
  • 问题内容: 我有一个字符串“ \\ u003c”,它属于UTF-8字符集。由于存在双反斜杠,因此我无法将其解码为unicode。如何从“ \\ u003c”获取“ \ u003c”?我正在使用Java。 我尝试过 但无法实现我想要的。 这是我的代码 文件的内容是 \ u003c 问题答案: 不知道您是否仍在寻找解决问题的方法(因为您已经接受了答案),但是我仍然会添加我的答案作为针对 所述问题 的可

  • 问题内容: 这是一个“到底发生了什么”的问题。我实际上不需要解决方案。 我必须用双反斜杠替换字符串中的所有单反斜杠。这就是我最终要做的… …其中strRootDirectory是上面的java.lang.String。 现在,我了解了第一个参数的四个反斜杠:regex期望两个反斜杠以表示单个文字反斜杠,而Java希望它们加倍。没关系。 但是,第二个参数的八个反斜杠到底是怎么回事?替换字符串不是应该

  • 问题内容: 我想构建一个JS函数,将一个参数列表隐藏到有效路径中(因为我不确定路径的一部分是否带有斜杠) 这是功能: 使用的RegEx匹配了http://regexpal.com上的所有开始和结束斜杠和反斜杠,但是该功能无法正常工作(RegEx不匹配)。此外,Chrome指出 语法错误:无效的正则表达式:/()$ | ^()/:未终止的组 当我只使用RegEx 但是,使用RegEx 提前致谢! 狮

  • 我需要将python3中的替换为复杂字符串中的。我知道这个问题已经被问了好几次,但大多数时候都是针对简单字符串,所以没有一个(接受的)答案真正适用于复杂字符串。 这也不同于使用无法解决此问题。请参见下文。 假设字符串是: 直截了当的方法是: 这导致: 语法错误:扫描字符串文字时EOL 这个答案建议使用: 这导致: 所以,没有变化。 这个答案表明: 但是对于如此复杂的字符串,这并不适用: unico

  • 许多发现都是针对python2的,我的例子是python3: 我需要把双背斜线换成单背斜线 这篇文章中的“接受答案”python3用单反斜杠替换双反斜杠在这里不起作用: 那么问题出在哪里呢?非常感谢。 [更新]: 由于@ShadowRanger的回复,所以如果在替换操作后打印字符串,它是预期的,但是,在我的情况下,我需要连接替换后生成另一个变量(conn_str),正如你所看到的,它仍然显示双反斜

  • 我有以下路径:,我想将其转换为: 我试图将上面的路径附加到这个路径:with但是当我将两个字符串附加在一起时,这是输出: 下面是有问题的代码: 由于斜杠的原因,附加的路径未被视为文件夹。有什么帮助吗? 编辑:只是澄清一下,完整路径(两个附加字符串)实际上是一个文件夹。