Я разбираю файл xml, используя приведенный ниже код:
import lxml
file_name = input('Enter the file name, including .xml extension: ')
print('Parsing ' + file_name)
from lxml import etree
parser = lxml.etree.XMLParser()
tree = lxml.etree.parse(file_name, parser)
root = tree.getroot()
nsmap = {'xmlns': 'urn:tva:metadata:2010'}
with open(file_name+'.log', 'w', encoding='utf-8') as f:
for info in root.xpath('//xmlns:ProgramInformation', namespaces=nsmap):
crid = (info.get('programId'))
titlex = (info.find('.//xmlns:Title', namespaces=nsmap))
title = (titlex.text if titlex != None else 'Missing')
synopsis1x = (info.find('.//xmlns:Synopsis[1]', namespaces=nsmap))
synopsis1 = (synopsis1x.text if synopsis1x != None else 'Missing')
synopsis1 = synopsis1.replace('\r','').replace('\n','')
f.write('{}|{}|{}\n'.format(crid, title, synopsis1))
Возьмем, к примеру, название «Přešité bydlení». Если я напечатаю заголовок во время разбора файла, он выйдет, как и ожидалось. Однако, когда я пишу это, оно отображается как «PÅ™eÅ¡ité bydlenû.
Я понимаю, что это связано с кодировкой (поскольку я смог изменить команду печати, чтобы использовать UTF-8, и «испортить» вывод), но я не смог распечатать письменный вывод так, как хотел. Я просмотрел библиотеку кодеков, но не смог. Наличие 'encoding = "utf-8"' в строке синтаксического анализатора XML не имело никакого значения.
Как я могу настроить письменный вывод, чтобы он был удобочитаемым для человека?