#python-3.x #split
#python-3.x #разделить
Вопрос:
Я хотел бы разобрать следующий текстовый файл в словарь:
Train A
Travelled 150km
No longer in use
Stored in warehouse
Train B
Travelled 100km
Used by X company
Daily usage
Actively upgrading
В качестве ключей в словаре конечного результата должны быть Train A
и Train B
, а остальные значения — в виде списка значений:
{
'Train A': ['Travelled 150km', 'No longer in use', 'Stored in warehouse'],
'Train B': ['Travelled 100km', 'Used by X company', 'Daily usage', 'Actively upgrading']
}
В настоящее время я пытался
with open('file.txt') as f:
data = f.read().split('n')
dict = {}
for i in data:
key = i[0]
value = i[1:]
d[key] = value
print(dict)
На самом деле не слишком уверен, где я ошибаюсь. Я хочу разделить n после строки A, где строка A является ключом, а вся остальная перечисленная информация является значением
Комментарии:
1. Это простое упражнение по программированию. Что вы пробовали? Пожалуйста, включите свой код.
2. @DYZ пробовал это, но это не работает
Ответ №1:
Ваши единицы разделены пустыми строками — поэтому сначала вы должны разделить их на две новые строки, а не на одну. Следующая реализация несколько неэффективна (она дважды разделяет одну и ту же переменную), но она работает, и вы можете улучшить ее, если хотите:
[{x.split("n")[0]: x.split("n")[1:]} for x in data.split("nn")]
#[{'Train A': ['Travelled 150km', 'No longer in use',
# 'Stored in warehouse']},
# {'Train B': ['Travelled 100km', 'Used by X company',
# 'Daily usage', 'Actively upgrading'}]
Ответ №2:
Вы близки. Сначала вам нужно разделить файлы, используя пустую строку ( 'nn'
), затем продолжить реализацию вашей идеи.
with open('file.txt') as f:
data = f.read().split('nn') # <=== this is what's missing
print(data)
d = {}
for i in data:
i = i.split('n')
key = i[0]
value = i[1:]
d[key] = value
print(d)