在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.system
或subprocess
os.system
模块)。
另一种用反斜线结束string的方法是用反斜杠后跟一个空格来结束string,然后在string上调用.strip()
函数。
我试图连接两个stringvariables,并用反斜杠分隔,所以我使用了以下内容:
newString = string1 + "\ ".strip() + string2