路径中的转义序列
source = "C:\Program Files (x86)\xxx\yyy\Agent\node.default\blr-w2k8-252\data\somefile.iso"
print source
输出结果:
"C:\Program Files (x86)\xxx\yyy\Agent
ode.defaulblr-w2k8-252\data\somefile.iso"
注意到对于 \n
这个代码,我得到了一个新行,而默认的 t\
也消失了。
我用 source=source.replace('\\', '/')
替换了,但输出结果还是一样,甚至 /n
也导致了新行。
我用 source=source.encode('string-escape')
之后,输出结果变得不一样了。
输出结果:
"C:\\Program Files (x86)\\xxx\\yyy\\Agent\node.default\x08lr-w2k8-252\\data\\somefile.iso"
只有原始字符串有效,也就是:
source=r"C:\Program Files (x86)\xxx\yyy\Agent\node.default\blr-w2k8-252\data\somefile.iso"
但是在我的程序中,我只有字符串变量。怎么才能让它工作,或者怎么把字符串变量变成原始字符串呢?
2 个回答
1
了解一下转义序列。在字符串前面加个'r',可以告诉Python忽略转义序列,直接把字符串当成普通文本来处理。当你把一个值直接写在代码里(也就是硬编码)和通过调用一个函数来给这个值赋值是有区别的。如果出现问题,检查一下你调用的那个函数是怎么生成这个路径的。
1
在字符串前面加上“r”并不会改变字符串的数据类型,它只是影响了字符串的解释方式。所以,你的问题很可能出在信息是如何被收集到字符串中的,而不是字符串在收集后是如何存储的。另外,注意在Python中打印字符串时,输出会自动包含一些转义字符(比如你“输出:”示例中的双斜杠)。实际上,字符串里只包含一个斜杠,尽管输出中显示了两个。