在Python中处理非字符串文字中的BACKSLASH字符

时间:2010-02-24 21:32:54

标签: python string encoding escaping

我从XML元素中读取了以下字符串,并将其分配给名为filename的变量。 我不知道如何更清楚地说明filename =以下字符串,而不会让某人认为我有一个字符串文字。

\\server\data\uploads\0224.1307.Varallo.mov

当我尝试将其传递给

os.path.basename(filename)

我得到以下

\\server\\data\\uploads\x124.1307.Varallo.mov

我尝试过filename.replace('\\','\\\\'),但这也不起作用。 os.path.basename(filename)然后返回以下内容。

\\\\server\\data\\uploads\\0224.1307.Varallo.mov

请注意,\ 0现在没有转换为\ x,但现在它根本不处理字符串。

我可以对我的文件名变量做什么来使这个String处于正确的状态,这样os.path.basename()实际上会给我回基本名称。我在OSX上,所以uncpath的东西不可用。

由于\ 0在基本名称的开头转换为\ x,所有尝试用\\手动替换\的尝试都会失败。

注意:这不是字符串文字,所以r''不起作用。

2 个答案:

答案 0 :(得分:2)

我们需要更多信息。变量文件名究竟是什么?要回答,请使用print repr(filename)并将结果添加到上述问题中。


疯狂猜测

免责声明:这是猜测 - 尝试:

import ntpath
print ntpath.basename(filename)

答案 1 :(得分:1)

世界上所有的贬低都不会改变你做错了的事实。 os.path用于本机路径。 \\foo\bar\baz不是OS X路径,它是Windows UNC。 posixpath无法处理UNC; ntpath是。