我需要使用分隔符“\”拆分字符串 该字符串可以采用以下任何格式:
file://C:\Users\xyz\filename.txt
C:\Users\xyz\filename.txt
我需要我的脚本将输出作为“filename.txt”
我尝试使用split('\\\\')
。它没有用。哪个是更好的功能?
答案 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
模块而不是ntpath
。 See the note:
注意由于不同的操作系统具有不同的路径名约定,因此标准库中有多个此模块版本。 os.path模块始终是适用于Python运行的操作系统的路径模块,因此可用于本地路径。但是,如果要操作始终采用不同格式之一的路径,也可以导入和使用单个模块。它们都有相同的界面:
- UNIX样式路径的posixpath
- Windows路径的ntpath
- 用于旧式MacOS路径的macpath
- OS / 2 EMX路径的os2emxpath
您需要支持两种格式:
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']
后有三个斜杠的原因。