Форум сайта python.su
Кое что я уже прочитал по этой теме, но ничего не помогает.
Суть в следующем, читаю файл, получаю определенную строку с русским текстом. Если выводить в консоль методом print эту строку, то все отображается корректно. Но мне нужно преобразовать строку в список, и вывести сам список (пока, в дальнейшев выводиться будут только отдельные его элементы). И вот тут-то проблема - выводится unicode-строка. Если разделять не просто строку из файла, а конструкцию unicode(строка), вываливается с ошибкой ‘ascii’ codec can't decode byte 0xd0 in position 18…
import string
f=open('2', 'r+')
for line in f:
d=string.split(unicode(line),'|||')
print d
Офлайн
а в какой кодировке русский текст?
насколько я помню unicode принимает в качестве второго параметра исходную кодировку, например:
unicode('Some string', ‘cp-1251’)
Офлайн
Исходный текст в юникоде. Пробовал пересохранить в другие, но эффекта нет. Пробовал и со вторым параметром, то же самое…
Офлайн
если он уже в юникоде, то за чем тебе unicode()
вообще все это можно записать немного короче
f = open('2', 'r+')
for line in f.readlines():
d = line.split('|||')
print d
Отредактировано (Март 9, 2009 02:17:38)
Офлайн
если без unicode(), то в консоль выводится строка вида \xd0\xa1\xb1 и так далее…Если с unicode(), то выдает ошибку…
Офлайн
vvivanв юникоде, или в утф-8 ? Потому что это разные вещи.
Исходный текст в юникоде.
Офлайн
тащемта да, исходный в utf-8.
Попробовал последний совет, строки видоизменились, теперь выглядят как u'\u041c\u0438'
Текст, набранный латинскими буквами, а также цифры отображаются нормально в обоих вариантах.
И да, никто не учитывает, что если выводить line - то все отображается корректно, а вот если ее делить на список, получается вот такая фигня…
Офлайн
vvivanну у тебя теперь юникод, с которым можно работать.
тащемта да, исходный в utf-8.
Попробовал последний совет, строки видоизменились, теперь выглядят как u'\u041c\u0438'
Офлайн
vvivanпопробуй принт не всего списка, а его одного элемента )
И да, никто не учитывает, что если выводить line - то все отображается корректно, а вот если ее делить на список, получается вот такая фигня…
Офлайн
alexzander77О! Так работает! Только интересно узнать почему так?
попробуй принт не всего списка, а его одного элемента )
Офлайн