在Pythonstring文字中引用反斜杠

我有一个string,它包含我想在Python中设置为一个variables的双引号和反斜杠。 但是,每当我尝试设置它时,引号或斜杠都将被删除或转义。 这是一个例子:

>>> foo = 'baz "\"' >>> foo 'baz ""' 

所以,而不是baz "\"就像我想我得到baz "" 。 如果我然后试图逃避反斜杠,它也没有帮助:

 >>> foo = 'baz "\\"' >>> foo 'baz "\\"' 

哪一个现在符合我的要求,但不是我原来想要的。 你如何解决这个问题?

你被输出误导了 – 你采取的第二种方法实际上是做你想做的,你只是不相信。 🙂

 >>> foo = 'baz "\\"' >>> foo 'baz "\\"' >>> print foo baz "\" 

顺便提一下,还有另一个stringforms可能会更清楚一点:

 >>> print r'baz "\"' baz "\" 

使用原始string:

 >>> foo = r'baz "\"' >>> foo 'baz "\\"' 

请注意,虽然看起来不对,但实际上是正确的。 stringfoo只有一个反斜杠。

发生这种情况是因为在提示符处inputfoo时,python会在string上显示__repr__()的结果。 这导致以下(注意只有一个反斜杠和print edstring周围没有引号):

 >>> foo = r'baz "\"' >>> foo 'baz "\\"' >>> print foo baz "\" 

让我们继续前进,因为有更多的反斜杠技巧。 如果你想在string末尾加一个反斜杠,并使用上面的方法,你会遇到一个问题:

 >>> foo = r'baz \' File "<stdin>", line 1 foo = r'baz \' ^ SyntaxError: EOL while scanning single-quoted string 

原始string不能正常工作,当你这样做。 你必须使用一个常规string,并避免你的反斜杠:

 >>> foo = 'baz \\' >>> print foo baz \ 

但是,如果您使用的是Windows文件名,则会遇到一些麻烦。 你想要做的是使用正斜杠和os.path.normpath()函数:

 myfile = os.path.normpath('c:/folder/subfolder/file.txt') open(myfile) 

这将节省大量的逃跑和脱发。 前一段时间, 这个页面很方便。

除了最后一点,Harley说的 – 在打开电话之前,没有必要把“/”改成“\”。 Windows非常乐意接受正斜杠的path。

 infile = open('c:/folder/subfolder/file.txt') 

唯一一次你可能需要stringnormpathed是如果你通过shell传递到另一个程序(使用os.systemsubprocess os.system模块)。

另一种用反斜线结束string的方法是用反斜杠后跟一个空格来结束string,然后在string上调用.strip()函数。

我试图连接两个stringvariables,并用反斜杠分隔,所以我使用了以下内容:

 newString = string1 + "\ ".strip() + string2