У меня возникли проблемы с преобразованием текстового файла в словарь python. К счастью, текстовый файл имеет «:», который делит мой будущий ключ на его значение. Например, каждая строка структурирована, как этот «-Project Manager: John Caldwell». Id нравится прокручивать каталог, содержащий множество текстовых файлов. В идентификаторе процесса нужно отбросить «-», который имеет каждая строка. Вот код, который я до сих пор:преобразование текстового файла в словарь python
import sys, traceback,os, csv, itertools
from collections import defaultdict
def get_metadata(filepath):
d = defaultdict(list)
for files in filepath:
if files.endswith(".txt"):
with open(files,'r') as in_file:
for line in in_file:
k,v = line.strip('-').split(':')
d[k].append(v)
return d
root_directory = get_metadata("C:\Random")
print root_directory
Это то, что я получаю, когда я запустить скрипт
defaultdict(<type 'list'>, {})
В качестве примечания стороны не используйте неизолированные обратные косые черты в неровных строковых литералах. Вы здесь, чтобы уйти отсюда, но попробуйте его с помощью «C: \ random», и вы получите неприятный сюрприз. Вы можете использовать необработанную строку ('r" C: \ Random "'), избегать обратных косых черт ('' C: \\ Random ") или (за исключением редких случаев) вместо этого использовать косые черты (' "C:/Random "'). – abarnert
Кроме того, ваши ценности в конце концов получат новые строки. Вам может понадобиться 'line.rstrip(). Lstrip ('-'). Split (':')' или аналогичный, чтобы позаботиться об этом. – abarnert
@abarnert Я получаю это как за ошибку: ValueError: требуется больше, чем 1 значение для распаковки – user40720