代码之家  ›  专栏  ›  技术社区  ›  user177800

在Python中处理非字符串文本中的反斜杠字符

  •  0
  • user177800  · 技术社区  · 15 年前

    我从一个XML元素中读取了以下字符串,它被分配给一个名为filename的变量。 我不知道如何更清楚地说明这一点,比如说filename=following string,而不会让别人认为我当时有一个字符串文字。

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

    当我试着把这个传给

    os.path.basename(filename)
    

    我得到以下信息

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

    我尝试了文件名。替换(“\\”、“\\”),但也不起作用。然后返回以下值。

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

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

    为了使这个字符串处于正确的状态,以便os.path.basename()实际返回basename,我可以对文件名变量执行什么操作?我在OSX上,所以UNCPath的资料不可用。

    所有用\\手动替换\的尝试都失败,因为\0在basename的开头被转换为\x。

    注意:这不是字符串,因此r“”不起作用。

    2 回复  |  直到 15 年前
        1
  •  2
  •   nosklo    15 年前

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


    瞎猜

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

    import ntpath
    print ntpath.basename(filename)
    
        2
  •  1
  •   Ignacio Vazquez-Abrams    15 年前

    世界上所有的否决都不会改变这样一个事实 你做错了 . os.path 对于本机路径。 \\foo\bar\baz 不是OS X路径,而是Windows UNC。 posixpath 不具备处理联合国秘书处的能力; ntpath 是。