Разбор строки Python: имена файлов с пробелами - PullRequest
0 голосов
/ 19 апреля 2011

Вероятно, это не самая распространенная проблема с синтаксическим анализом имени файла, но у меня есть программа, которая отображает список файлов в следующем формате:

Filename.ext Location

Некоторые примеры будут

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

Имя файла и местоположение разделены одним пробелом. Как показано, у меня могут быть пробелы в имени файла.

Я хочу извлечь имя файла из каждой строки, но не могу найти хороший способ сделать это. Я думал о поиске по индексу конкретного символа, а затем извлекал подстроку от 0 до (index-offset), где offset - это количество символов, которые я должен вернуться. Но я не думаю, что есть символ, который я мог бы найти, который гарантировал бы жестко закодированное смещение.

Ответы [ 3 ]

2 голосов
/ 19 апреля 2011

Я бы, вероятно, использовал регулярное выражение для захвата всего, что начиналось с буквы диска до конца строки, что-то вроде:

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

, затем сопоставьте каждую строку с

 matches = re.match(line, matchWinPaths)
 winPath = matches.group(1)
1 голос
/ 19 апреля 2011

Что ж, если у вас определенное местоположение, например, C: \, D: \ etc, вы можете просто разделить эти символы

import re
f=open("file")
for line in f:
    print re.split("[C-Z]:",line)[0]
f.close(0
1 голос
/ 19 апреля 2011

Есть ли у вас точки (.) в именах файлов, кроме конца в конце перед расширением?Если нет, то вы сможете разобрать что-то вроде этого:

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