在python中使用分隔符“\”拆分字符串

时间:2014-05-19 07:29:51

标签: python

我需要使用分隔符“\”拆分字符串 该字符串可以采用以下任何格式:

  1. file://C:\Users\xyz\filename.txt
  2. C:\Users\xyz\filename.txt
  3. 我需要我的脚本将输出作为“filename.txt” 我尝试使用split('\\\\')。它没有用。哪个是更好的功能?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

请尝试以下步骤,注意在字符串中使用\的有效字符串格式并避免\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'

答案 2 :(得分:0)

这里有两个问题。

路径分割

您通常使用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上运行),那么您可以使用os.path模块而不是ntpathSee the note

  

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

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

格式支持

您需要支持两种格式:

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

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

    我会认为这是你感兴趣的格式。如果没有,那么我就不能保证你正在处理什么,你可以对如何解释它进行一些有根据的猜测(放下{{ 1}}前缀并将其视为Windows路径?)。

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

    file://

    请阅读this URI scheme description以更好地了解此格式的外观以及>>> 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'] 后有三个斜杠的原因。