路径中的转义序列

1 投票
2 回答
1167 浏览
提问于 2025-04-17 16:35
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中打印字符串时,输出会自动包含一些转义字符(比如你“输出:”示例中的双斜杠)。实际上,字符串里只包含一个斜杠,尽管输出中显示了两个。

撰写回答