0

这可能不是最常见的文件名解析问题,但我有一个程序可以显示以下格式的文件列表:

文件名.ext 位置

一些例子是

sampleFile.jpg C:\Images\我的 jpgs
另一个文件.bmp C:\Images\myBmps

文件名和位置由一个空格分隔。如图所示,我的文件名中可以​​有空格。

我想从每一行中提取文件名,但似乎找不到这样做的好方法。我想搜索特定字符的索引,然后从 0 到 (index - offset) 提取子字符串,其中 offset 是我应该返回的字符数。但我不认为有一个我可以搜索的字符可以保证硬编码的偏移量会起作用。

4

3 回答 3

2

我可能会使用正则表达式来抓取以驱动器号开头到行尾的任何内容,例如:

 import re
 matchWinPaths = re.compile("^.*([A-Z]:\\.+$)")

然后将每一行与

 matches = re.match(line, matchWinPaths)
 winPath = matches.group(1)
于 2011-04-19T15:08:07.893 回答
1

好吧,如果您有不同的位置,例如 C:\ , D:\ 等,您可以只拆分这些字符

import re
f=open("file")
for line in f:
    print re.split("[C-Z]:",line)[0]
f.close(0
于 2011-04-19T15:10:03.700 回答
1

.除了扩展名之前的末尾之外,您的文件名中是否有句点 ( )?如果没有,您应该能够解析如下内容:

1 find first instance of '.'
2 step to the next space
3 that space is the delimiter between file name and location
于 2011-04-19T15:08:45.023 回答