【问题标题】:Split string using delimiter "\" in python [duplicate]在python中使用分隔符“\”拆分字符串[重复]
【发布时间】:2014-05-19 07:29:50
【问题描述】:

我需要使用分隔符“\”分割字符串 字符串可以是以下任何一种格式:

  1. file://C:\Users\xyz\filename.txt
  2. C:\Users\xyz\filename.txt

我需要我的脚本将输出作为“filename.txt” 我尝试使用split('\\\\')。它行不通。哪个功能更好用?

【问题讨论】:

    标签: python


    【解决方案1】:

    假设你的字符串是pathName,那么你可以使用fileName = pathName.split('\\')[-1]

    【讨论】:

      【解决方案2】:

      尝试以下步骤,注意在字符串中使用\的有效字符串格式,避免\x scope error

      >>> file = 'file://C:\\Users\\xyz\\filename.txt'
      >>> file.split('\\')[-1]
      'filename.txt'
      
      >>> file = 'C:\\Users\\xyz\\filename.txt'
      >>> file.split('\\')[-1]
      'filename.txt'
      

      【讨论】:

        【解决方案3】:

        这里有两个问题。

        路径分割

        您通常使用os.path.split 来处理路径:

        >>> import os.path
        >>> p=r'C:\Users\xyz\filename.txt'
        >>> head, tail = os.path.split(p)
        >>> head
        'C:\\Users\\xyz'
        >>> tail
        'filename.txt'
        

        警告:os.path 使用它所使用的操作系统的路径格式。如果您知道您特别想使用 Windows 路径(即使您的程序在 Linux 或 OSX 上运行),那么您将使用 ntpath 模块而不是 os.pathSee the note:

        注意由于不同的操作系统有不同的路径名约定,标准库中有这个模块的几个版本。 os.path 模块始终是适用于 Python 运行的操作系统的路径模块,因此可用于本地路径。但是,如果您想操作始终采用其中一种不同格式的路径,您也可以导入和使用各个模块。它们都有相同的界面:

        • 用于 UNIX 样式路径的 posixpath
        • Windows 路径的 ntpath
        • 旧式 MacOS 路径的 macpath
        • os2emxpath 用于 OS/2 EMX 路径

        格式支持

        您有 2 种格式需要支持:

        1. file://C:\Users\xyz\filename.txt
        2. C:\Users\xyz\filename.txt

        2 是正常的 Windows 路径,而 1 是...坦率地说,我不知道那是什么。它有点像file URI,但使用了 Windows 风格的分隔符(反斜杠)。这很奇怪。当我在 Windows 上的 Chrome 中打开 PDF 时,URI 看起来不同:

        file:///C:/Users/kos/Downloads/something.pdf
        

        我会假设这是您感兴趣的格式。如果不是,那么我无法保证您正在处理的内容,您可以对如何解释它做出一些有根据的猜测(删除 @987654331 @ 前缀并将其视为 Windows 路径?)。

        您可以使用the urlparse module 将URI 拆分为有意义的部分(请参阅urllib.parse for python 3),一旦您提取了URI 的路径部分,您就可以使用.split('/') 它(URI 语法很简单足以允许这样做)。如果您在 file:// URI 上使用此模块,会发生以下情况:

        >>> r = urlparse.urlparse(r'file:///C:/Users/xyz/filename.txt')
        >>> r 
        ParseResult(scheme='file', netloc='', path='/C:/Users/xyz/filename.txt', params='', query='', fragment='')
        >>> r.path
        '/C:/Users/xyz/filename.txt'
        >>> r.path.lstrip('/').split('/')
        ['C:', 'Users', 'xyz', 'filename.txt']
        

        请阅读this URI scheme description 以更好地了解这种格式的外观以及为什么file: 后面有三个斜线。

        【讨论】:

          猜你喜欢
          • 2020-01-07
          • 2011-06-27
          • 1970-01-01
          • 1970-01-01
          • 2020-10-03
          • 2018-04-10
          • 1970-01-01
          • 2018-08-18
          相关资源
          最近更新 更多