Форум сайта python.su
0
Есть текстовый файл с набором строк. Текст на русском, что-то типа такого:
Строка один Строка два Строка три ...
клей полиграфия
with open("input.txt", "r") as textfile: a = [line.strip() for line in textfile] file = open('output.txt', 'w') file.write(str(a)) file.close()
Отредактировано acme_ag (Сен. 2, 2014 12:42:34)
Офлайн
49
Какая кодировка в исходном файле? Какая операционая система?
Строчка, подобная этой, в начале файле скрипта присутствует?
#-*-coding:utf8-*-
Отредактировано Alen (Сен. 2, 2014 13:17:46)
Офлайн
33
acme_agВ приложении, мы работаем только с Unicode.
Кодировка сбивается на этапе .strip()
acme_agПришёл текст в приложение, декодировал в Unicode, поработал с ним,
как решать такие проблемы.
Отредактировано Budulianin (Сен. 2, 2014 14:02:26)
Офлайн
0
Win7, python 2.7.6, использую PyScripter/notepad++/Sublime text2
#-*-coding:utf8-*- – это указывал.
В исходнике были utf-8 w/o BOM, utf-8, ansi…. да в какой-то момент я просто пробовал все подряд. Создавал пустой файл в utf-8 и вручную вписывал тестовый текст. Использовал notepad, notepad++, эксель (я уже говорил, что использовал все подряд?).
На выходе либо это
['\xd1\x82\xd0\xb5\xd1\x80\... ']
клей полиграфия
Офлайн
33
acme_ag
На выходе либо это
acme_agЭто нормальное отображение в интерактивной оболочке.['\xd1\x82\xd0\xb5\xd1\x80\... ']
acme_agА это, значит, что у тебя консоль не настроена под нужную кодировку.
клей полиграфия
Отредактировано Budulianin (Сен. 2, 2014 14:10:10)
Офлайн
0
и в консоли, и в output.txt
Офлайн
33
acme_ag
Попробуй создать файл в utf-8
прописать там #-*-coding:utf8-*- первой строкой, прописать строку s = u'русские буквы'
закодировать строку в utf-8 и записать её в файл.
Всё должно быть нормально.
Офлайн
0
Хоть раздел, вроде, и для таких, как я, все же извиняюсь за тупак и несообразительность.
1. создаю файл input.txt (например), в utf-8
2. в нем первой строкой пишу #-*-coding:utf8-*
ок. пока понятно.
3. в нем же второй строкой пишу s = u'русские буквы'?
4. закодировать строку в utf-8 и записать её в файл – какую и как?
Офлайн
33
acme_ag
3. в нем же второй строкой пишу s = u'русские буквы'?
s_encode = s.encode('utf-8')
Отредактировано Budulianin (Сен. 2, 2014 14:52:15)
Офлайн
0
В консоли ошибка:
'ascii' codec can't decode byte 0xd1 in position 26…
Отредактировано acme_ag (Сен. 2, 2014 16:13:07)
Офлайн