Python字符串解析:带空格的文件名

0 投票
3 回答
3082 浏览
提问于 2025-04-16 16:02

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

Filename.ext Location

一些例子是:

sampleFile.jpg C:\Images\my jpgs
another file.bmp C:\Images\myBmps

文件名和位置之间用一个空格分开。正如所示,我的文件名中可以有空格。

我想从每一行中提取文件名,但似乎找不到好的方法来做到这一点。我想过搜索某个特定字符的位置,然后从0到(位置 - 偏移量)提取子字符串,其中偏移量是我需要回退的字符数。但我觉得没有一个字符可以用来搜索,这样硬编码的偏移量就能保证有效。

3 个回答

1

你的文件名中有没有其他的句号(.),除了在文件扩展名之前的那个?如果没有的话,你应该可以处理像这样的内容:

1 find first instance of '.'
2 step to the next space
3 that space is the delimiter between file name and location
1

好吧,如果你有不同的盘符,比如 C:\、D:\ 等等,你可以直接根据这些字符来分割。

import re
f=open("file")
for line in f:
    print re.split("[C-Z]:",line)[0]
f.close(0
2

我可能会用正则表达式来抓取任何以驱动器字母开头到行尾的内容,类似这样的:

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

然后用下面的内容来匹配每一行:

 matches = re.match(line, matchWinPaths)
 winPath = matches.group(1)

撰写回答