这可能不是最常见的文件名解析问题,但我有一个程序以下列格式显示文件列表:
Filename.ext Location
一些例子是
sampleFile.jpg C:\Images\my jpgs another file.bmp C:\Images\myBmps
文件名和位置由单个空格分隔。如图所示,我的文件名中可以有空格。
我想从每一行中提取文件名,但似乎无法找到一个好方法。 我想到搜索特定字符的索引,然后从0到(索引 - 偏移)提取子字符串,其中offset是我应该返回的字符数。但我不认为我可以搜索到的字符可以保证硬编码的偏移量可以正常工作。
答案 0 :(得分:2)
我可能会使用正则表达式来抓取以驱动器号开头的任何内容,例如:
import re
matchWinPaths = re.compile("^.*([A-Z]:\\.+$)")
然后将每一行与
匹配 matches = re.match(line, matchWinPaths)
winPath = matches.group(1)
答案 1 :(得分:1)
您的文件名中是否有句点(.
),而不是在扩展名之前的句点?如果没有,你应该能够解析这样的事情:
1 find first instance of '.'
2 step to the next space
3 that space is the delimiter between file name and location
答案 2 :(得分:1)
好吧,如果你有不同的位置,例如C:\,D:\ etc,你可以拆分这些字符
import re
f=open("file")
for line in f:
print re.split("[C-Z]:",line)[0]
f.close(0