Python如何用re.sub()替换反斜杠

Python如何用re.sub()替换反斜杠,python,python-2.7,Python,Python 2.7,我有以下字符串 mystr1 = 'mydirname' myfile = 'mydirname\myfilename' 我正试着这么做 newstr = re.sub(mystr1 + "\","",myfile) 如何避开我试图连接到mystr1的反斜杠?您需要四倍反斜杠: newstr = re.sub(mystr1 + "\\\\", "", myfile) 原因: 正则表达式匹配单个反斜杠:\\ 描述此正则表达式的字符串:“\\\\” 或者您可以使用原始字符串,因此只需要一个

我有以下字符串

mystr1 = 'mydirname'
myfile = 'mydirname\myfilename'
我正试着这么做

newstr = re.sub(mystr1 + "\","",myfile)

如何避开我试图连接到mystr1的反斜杠?

您需要四倍反斜杠:

newstr = re.sub(mystr1 + "\\\\", "", myfile)
原因:

  • 正则表达式匹配单个反斜杠:
    \\
  • 描述此正则表达式的字符串:
    “\\\\”

或者您可以使用原始字符串,因此只需要一个双反斜杠:
r“\\\”

在正则表达式中,您可以通过在反斜杠前面放置反斜杠来转义反斜杠,就像转义任何其他字符一样。这意味着“\\”是一个反斜杠。

我知道这并不能回答你的问题,但如果可能的话,甚至不要去那里;使用
os.path.join
和其他
os.path
函数以独立于系统的方式操纵路径。@Amadan,谢谢你的回答,但我并没有试图操纵任何路径,我只是试图从特定文件中获取内容(为此,我使用的是os.path)然后我缩小数据并根据原始文件名将其作为JS var放置。我只是在处理JS变量的文件名字符串(包括完整路径)。我只是认为您所做的几乎与
os.path.basename(myfile)
相同。我的错。是的,但我们这里处理的是包含正则表达式的字符串。你的答案基本上是正确的;问题只是更深一点。我将向上投票,使其为0,而不是-1。下次有一条反馈:“为什么我讨厌python”的评论在stackoverflow上是不受欢迎的。Stackoverflow是为了得到可靠的答案,而不是为了扔泥。尽管你可能认为r“\\”会让你得到与“\\”相同的答案,因为r“\\”是“\\\”,但你错了……在我的Python 3.2(r32:88445,2011年2月20日,21:29:02)[MSC v.1500 32位(英特尔)]win32:
>>subject=“th is:a path?”(这是路径吗?);re.sub(“[/\\\:?\”,“\\”,“\\”,subject)”是路径,但我注意到它只适用于未知的转义,比如“\:”。你也可以做
newstr=re.sub(mystr1+re.escape(\\”),myfile)
。如果你的斜杠在它自己的变量
slash=“\\”
,你可以
re.sub(mytr1+re.escape(slash),“”,myfile)