@Sketcher2010
PHP, python, java developer

Как выводить русские символы в файл python?

Имеется легкая программа на Python 2, которая проходит по одному файлу с русскими словами и добавляет их в коллекцию, потом эта коллекция записывается в json файл
f = open("in.txt")
conversations = open("data/russian/conversations.json", "wb")
ar = {"conversations": []}

worker = []
for line in f:
    if line == "-----":
        ar["conversations"].append(worker)
        worker = []
    else:
        worker.append(line.strip())
print ar["conversations"][0][0]
conversations.write(str(ar))
conversations.close()


В итоге в json файле я имею что-то подобное:

{'conversations': [['\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82!', '\xd0\x97\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb2\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd0\xb9!', // и так далее

Вопрос заключается в следующем: как корректно выводить русские символы в файл? (.encode("utf-8") пытался, не помогло)
  • Вопрос задан
  • 16674 просмотра
Пригласить эксперта
Ответы на вопрос 2
@abcd0x00
import codecs
import json

with codecs.open('file.txt', 'w', encoding='utf-8') as fout:
    json.dump({u'абв': u'где'}, fout, ensure_ascii=False)


[guest@localhost py]$ cat file.txt 
{"абв": "где"}[guest@localhost py]$
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Попробуйте наподобие этого:
# -*- codecs: utf-8 -*-
import codecs

file = codecs.open("somefile", "w", "utf-8")
file.write(u'какая-то строка')
file.close()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы