Форум сайта python.su
0
Всем добрый день. Имеется папка с тремя файлами, в двух из них есть русские буквы. Однако
print(listdir(mypath))
['sfsdfsd', 'sfsdfsd (\xd0\xba\xd0\xbe\xd0\xbf\xd0\xb8\xd1\x8f)', 'sfsdfsd (\xd0\xb4\xd1\x80\xd1\x83\xd0\xb3\xd0\xb0\xd1\x8f \xd0\xba\xd0\xbe\xd0\xbf\xd0\xb8\xd1\x8f)']
for item in listdir(mypath): print(item)
sfsdfsd sfsdfsd (копия) sfsdfsd (другая копия)
Отредактировано winmasta (Окт. 3, 2017 07:28:42)
Офлайн
857
Поставь третий питон.
Офлайн
0
Да в третьем питоне проблема выше ушла, но вылезла следующая.
d - словарь
print(d)
{'size': '10', 'time': '2017-10-03 18:35:22.028048', 'name': 'sfsdfsd (12-я копия)'}
print(json.dumps(d))
{"size": "10", "name": "sfsdfsd (13-\u044f \u043a\u043e\u043f\u0438\u044f)", "time": "2017-10-03 18:37:25.856247"}
Отредактировано winmasta (Окт. 3, 2017 14:38:26)
Офлайн
4
kwarg ensure_ascii для json.dumps и кодек в нужную кодировку могли бы вам помочь
Офлайн
253
SlowНет не помогут. Проблема не в языке а в пользователе который должен понять что это нормальный результат, который полностью соответствует спецификации модуля.
kwarg ensure_ascii для json.dumps и кодек в нужную кодировку могли бы вам помочь
winmastaПочему вы считаете что это проблема? Считайте данные назад. Читаются?
ушла, но вылезла следующая.
Офлайн
0
Данные конечно читаются, но как их прекодировать в “читаемую” кодировку. Я понимаю, что результат нормальный, нужно при сохранении в файл перекодировать но как ?
Офлайн
253
winmastaПерекодировать в кодировку :)?
но как их прекодировать в “читаемую” кодировку
with open(file_name, "w", encoding="utf-8") as f: json.dump(obj, f, ensure_ascii=False)
Отредактировано doza_and (Окт. 4, 2017 09:19:00)
Офлайн
0
doza_andСпасибо, это именно то, что я искал.
ensure_ascii=False)
Офлайн