因此,我正在编写一个小程序作为更大的一部分来从文件路径中提取名称。有问题的名字总是从文件路径中的相同位置开始,所以我的推理是这样的,以获得我想要的名称。
说道路就像这样C:/ Docs / Bob / blah / blah / blah
#cut the string at to the beginning of the name
path = path[8:]
#make a loop to iterate over the string
for letter in path:
if(letter == '/'):
string_index = index
return path[:string_index]
我正在寻找的是一种方法来获得"索引"
谢谢!
答案 0 :(得分:1)
不要这样做。请改用os.path
。例如:
>>> import os.path
>>> path = 'C:\\Docs\\Bob\\blah\\blah\\blah'
>>> base = 'C:\\Docs'
>>> os.path.relpath(path, base)
'Bob\\blah\\blah\\blah'
此外,使用os.path
将确保您的代码可以在其他平台上运行,而不仅仅是Windows(假设基本路径设置正确)。
如果您只想要'Bob'
作为答案,那么您可能想要做类似
>>> import re
>>> # Windows supports both / and \
>>> if os.path.altsep:
... sep=os.path.sep + os.path.altsep
... else:
... sep=os.path.sep
...
>>> pseps = re.compile('[%s]' % re.escape(sep))
>>> pseps.split(os.path.relpath(path,base), 1)[0]
'Bob'
(可悲的是os.path.split()
只能从最右边的结束,所以我们不能在没有递归的情况下轻松使用它。)