如何使用Python中的正则表达式将'\'替换为'/'[复制]

问题描述 投票:1回答:4

这个问题在这里已有答案:

我尝试了这个,但没有奏效。

import re

s = "Ex\am\ple String"
replaced = re.sub("\", "/", s)

print replaced 

有什么建议?

regex python-3.x
4个回答
3
投票

只需使用此代码:

s = s.replace("\\", "/")

它用正斜杠替换所有反斜杠。两个反斜杠的原因是因为你必须逃避另一个反斜杠。


3
投票

\\\\这样试试吧:

import re

s = "Ex\am\ple String"
replaced = re.sub("\\\\", "/", s)

print replaced 

2
投票

你可能没有使用足够的反斜杠。反斜杠通常是一个转义字符。尝试使用一个\,然后两个\来评论这里,你会注意到你只在输出中得到一个。

我输入的代码版本来显示我的意思:

Backslash is often an escape character. Try commenting here using one \, 
then two \\, you'll notice you only get one in the output here.

当我剪切和粘贴文件位置时,我在R中编写了类似的代码

fileLoc = function(){
  Rlocation = gsub( "\\\\","/",readClipboard())
  return(Rlocation)
}

请注意,它需要4个反斜杠。

请尝试以下方法:

s = "Ex\am\ple String"
replaced = re.sub("\\\\", "/", s)

2
投票

你有两个问题:首先,你的字符串不是你想象的那样,因为'\a'被解释为一个逃避文字。要解决此问题,请使用raw或regex字符串,

s = r"Ex\am\ple String"

现在你可以做你想要的了

replaced = re.sub(r"\\", "/", s)

在这里,需要两个\因为re期望单个\成为逃脱角色。此外,r"\\"需要是原始字符串,因为Python通常也将"\"解释为转义字符。为了“逃脱逃脱角色”本身,你可以再次做双\技巧,所以另一种做法是

replaced = re.sub("\\\\", "/", s)

Better method

逃避和re模块放在一边,对于像这样的简单替换,你应该使用str replace方法,

replaced = s.replace("\\", "/")

(“只有”两个\需要因为我们只使用“裸”Python,而不是re

© www.soinside.com 2019 - 2024. All rights reserved.