Python/Programming beginner. Работа над разбором/извлечением данных из XML.Запись в XML - Отсутствующие линии
Цель: Возьмите неправильный xml (несколько xml-файлов в один файл .data) и напишите его в отдельные файлы xml. FYI - каждый XML начинается с той же декларации в файле, и в общей сложности 4.
подход (1) Я использую readlines() в файле (2) Найти индекс декларации каждого языка XML (3) перебирать фрагменты списка xml, записывая каждую строку в файл. Код ниже, извинения, если это отстой :)
For i, x in enumerate(decl_indxs):
xml_file = open(file, 'w')
if i == 4:
for line in file_lines[x:]:
xml_file.write(line)
else:
for line in file_lines[x:decl_indxs[i+1]]:
xml_file.write(line)
Проблема Первые 3 XMLs создаются без проблем. Четвертый xml пишет только первые 238 из 396 строк.
Устранение неисправностей Я изменил код, чтобы распечатать список, используемый для окончательного цикла, и это было хорошо. Я также зациклился только на четвертом списке, и он выводится правильно.
Помощь Может кто-нибудь объяснить, почему это произойдет? Было бы также полезно получить советы по улучшению моего подхода. Чем больше информации, тем лучше. Спасибо
Спасибо @Nikolay я дважды проверил мои показатели были правильными, и когда я распечатал кусочек он включал все данные. Но меня больше всего интересует улучшенная стратегия. Я просмотрел парсер XML, который вы упомянули, но не мог понять, как создать несколько деревьев из моего одного файла. Я мог получить дерево только для первого корня. При расследовании я столкнулся с советом по стеку, чтобы упростить вещи и написать его по строкам. –
Была ли цель объединения строк xml в строку (result_strings) для повышения производительности при записи? Пропустили бы это и использование вложенных для result_lists в функции save_xmls было бы менее эффективным? –
Да, синтаксические анализаторы - все о единых XML. Ваша задача - чистая работа со строками. То есть после того как ваша задача будет выполнена, и вы собираетесь справиться с результатом, вы хотите, чтобы парсер в 95% случаев. –