У меня есть текстовый файл со следующей структурой:
SOURCE: RCM
DESTINATIONS BEGIN
JCK SF3
DESTINATIONS END
SOURCE: TRO
DESTINATIONS BEGIN
GFN SF3
SYD SF3 DH4
DESTINATIONS END
Я пытаюсь создать вложенный словарь, в котором результирующий словарь будет выглядеть так:
handout_routes = {
'RCM': {'JCK': ['SF3']},
'TRO': {'GFN': ['SF3'], 'SYD': ['SF3', 'DH4']}
}
Это всего лишь пример данных, но при чтении данных мы можем предположить следующее: Самая первая строка начинается с SOURCE: за которым следует трехбуквенный код аэропорта IATA. Строка после каждой строки, которая начинается с SOURCE: это DESTINATIONS BEGIN. Между DESTINATIONS BEGIN и DESTINATIONS END есть одна или несколько строк. После каждой строки с DESTINATIONS BEGIN идет соответствующая строка с DESTINATIONS END. Строки между DESTINATIONS BEGIN и DESTINATIONS END начинаются с трехбуквенного кода аэропорта IATA, за которым следует один или несколько трехзначных буквенно-цифровых кодов самолетов. Каждый код отделяется пробелом. Строки после DESTINATIONS END будут начинаться с SOURCE:, иначе вы достигли конца файла.
Пока я пытался
with open ("file_path", encoding='utf-8') as text_data:
answer = {}
for line in text_data:
line = line.split()
if not line: # empty line?
continue
answer[line[0]] = line[1:]
print(answer)
Но он возвращает такие данные:
{'SOURCE:': ['WYA'], 'DESTINATIONS': ['END'], 'KZN': ['146'], 'DYU': ['320']}
Думаю, именно так я структурировал код для чтения файла. Любая помощь будет оценена. Возможно, мой код слишком прост для того, что нужно сделать с файлом. Спасибо.
Это направляет меня на правильный путь, но возвращает только это: {'AER': {}} Возможно, я неправильно реализую ваш код? Что это возвращает для вас?
Это странно, для меня он возвращает {'RCM': {'JCK': ['SF3']}, 'TRO': {'GFN': ['SF3'], 'SYD': ['SF3', 'DH4 ']}}, именно тот дикт, который, как вы сказали, должен вернуться. Не могли бы вы показать мне файл, который вы пытаетесь открыть?
Конечно, это файл .dat. Это большой набор данных, так как я могу показать вам?
Неважно, это была моя реализация, которая была неправильной. Это отлично работает! Спасибо!