我正在寻找一种简单的方法来识别另一个字符串中字符串的最后位置......例如。如果我有:file = C:\Users\User\Desktop\go.py
我想裁剪file = go.py
通常我必须通过循环+查找语句运行C:\Users\User\Desktop\go.py
,并且它会遇到一个\
的Evey时间它会问......是字符串中的最后一个\
? ......一旦我找到了最后\
,我就会file = file[last\:len(file)]
我很想知道是否有更快更简洁的方法来做这件事。最好没有循环。
类似于文件= [file('\',
最后 ):len(file)]
如果没有像我上面所示的那样......那么我们可以以某种方式将循环置于[:]
之内。类似file = [for i in ...:len(file)]
的东西
谢谢:))
答案 0 :(得分:9)
如果仅涉及文件路径,则可以使用os.path.basename
:
>>> import os
>>> os.path.basename(file)
'go.py'
或者,如果您未在Windows上运行代码,则必须使用ntpath
代替os.path
。
答案 1 :(得分:5)
您可以将字符串拆分为列表,然后获取列表的最后一个索引。
样品:
>>> file = 'C:\Users\User\Desktop\go.py'
>>> print(file.split('\\')[-1])
go.py
答案 2 :(得分:4)
我同意Felix关于文件路径应该使用os.path.basename
来处理。但是,您可能希望查看内置字符串函数rpartition
。
>>> file = 'C:\Users\User\Desktop\go.py'
>>> before, separator, after = file.rpartition('\\')
>>> before
'C:\\Users\\User\\Desktop'
>>> separator
'\\'
>>> after
'go.py'
还有rfind
函数,它为您提供子字符串的最后一个索引。
>>> file.rfind('\\')
21
我意识到我在聚会上有点迟了,但因为这是搜索例如搜索结果时的最佳结果之一。在Google上“在str python中找到最后一个”,我认为这可能有助于某人添加此信息。
答案 3 :(得分:2)
对于一般用途案例(因为OP表示他们喜欢分裂解决方案的推广)......尝试rfind(str)
函数。
"myproject-version2.4.5.customext.zip".rfind(".")
编辑:道歉,我还没有意识到这个帖子多大了......: - /
答案 4 :(得分:0)
对于路径名操作,您希望使用os.path
。
对于此特定问题,您希望使用将返回路径的最后一个组件的os.path.basename(path)
函数,或者如果路径以斜杠结尾(即文件夹的路径而不是文件夹的路径),则使用空字符串文件)。
import os.path
print os.path.basename("C:\Users\User\Desktop\go.py")
给出:
go.py