Я работаю с файлами yaml, которые должны быть доступны для чтения и редактирования, но также будут редактироваться из кода Python. Я использую Python 2.7.3PyYaml - Dump unicode со специальными символами (например, акценты)
Файл должен обрабатывать акценты (в основном для обработки текста на французском языке).
Вот пример моего вопроса:
import codecs
import yaml
file = r'toto.txt'
f = codecs.open(file,"w",encoding="utf-8")
text = u'héhéhé, hûhûhû'
textDict = {"data": text}
f.write('write unicode : ' + text + '\n')
f.write('write dict : ' + unicode(textDict) + '\n')
f.write('yaml dump unicode : ' + yaml.dump(text))
f.write('yaml dump dict : ' + yaml.dump(textDict))
f.write('yaml safe unicode : ' + yaml.safe_dump(text))
f.write('yaml safe dict : ' + yaml.safe_dump(textDict))
f.close()
Письменное файл содержит:
write unicode : héhéhé, hûhûhû
write dict : {'data': u'h\xe9h\xe9h\xe9, h\xfbh\xfbh\xfb\n'}
yaml dump unicode : "h\xE9h\xE9h\xE9, h\xFBh\xFBh\xFB"
yaml dump dict : {data: "h\xE9h\xE9h\xE9, h\xFBh\xFBh\xFB"}
yaml safe unicode : "h\xE9h\xE9h\xE9, h\xFBh\xFBh\xFB"
yaml safe dict : {data: "h\xE9h\xE9h\xE9, h\xFBh\xFBh\xFB"}
YAML свалка отлично работает для загрузки с YAML, но это не человек для чтения.
Как вы можете видеть в коде примера, результат тот же, когда я пытаюсь написать представление unicode dict (я не знаю, связано ли это или нет).
Я бы хотел, чтобы дамп содержал текст с акцентом, а не код юникода. Возможно ли это?
Это Python ** 2 ** Я полагаю? Я не слишком уверен в обработке Юникода Python 2, но вы можете попробовать вместо этого использовать «yaml.safe_dump», который сбрасывает данные в формате с нейтральной реализацией вместо формата, специфичного для Python. – deceze
О да, извините, это python 2.7.3, а использование safe_dump имеет тот же самый результат. –