Найти - Пользователи
Полная версия: Преобразование unicode-строки к списку
Начало » Python для новичков » Преобразование unicode-строки к списку
1
Omro
Есть словарь Зализняка (http://speakrus.ru/dict/index.htm) txt.
По нему нужен удобный поиск (по множеству критериев). Но мучая поиск, я игрался без текстовика. Просто со списками, вбитыми в код.

Потом отчасти разобрался с юникодом. В итоге - эта часть:

import codecs
s = codecs.open(“zdf-win.txt”, encoding=“cp1251”)
data = s.read()
print data

Но как это теперь преобразовать в список, удобоваримый для питона?
И подходит для скольки килобайт список (или мегабайт) максимум?
Ed
Вот так, например:
import codecs
fp = codecs.open("zdb-win.txt", encoding="cp1251")
lines = [line.strip() for line in fp]
fp.close()
Omro
Прекрасно работает, но выдаёт всё как unicode - строки в списке (u'\u****\', u'\u****\'… но не по одному символу там). А как в списке получить форму данных, с которыми можно работать по по-обычному, перенося элемент списка далее в строку и вытаскивая часть символов? Ведь в них ещё поиск вести надо.
Ed
не совсем понятно что вы хотите :(
Список из примера - это список строк из вашего файла. Если вас смущает unicode, то не используйте codec, просто открывайте файл функцией open и вперед :)
Если вам нужны не строки, а списки символов, то читайте так:
lines = [list(line.strip()) for line in fp]
Будет вам список списков символов, а не список строк.

Обратное преобразование списка символов в строку делайте с помощью ''.join(ваш список)
Ed
Я наверное таки понял что вы хотите. Просто список символов, не разбивая на строки?
Вам просто нужно строку, которую вы прочитали из файла преобразовать в список, вот так:
data = list(s.read())
Omro
Сорри :)

>>>print lines
>>>print lines
-де
[u'-\u0434\u0435', u'-\u043a\u0430', u'-\u043b\u0438\u0431\u043e', u'-\u043d\u04
38\u0431\u0443\u0434\u044c', u'-\u0441']

WTH?
Вот в чём вопрос - почему питон выдаёт всё в разных представлениях символов?
XD
Ed
Потому, что print конвертирует то, что вы ему даете в строку: http://docs.python.org/reference/simple_stmts.html#the-print-statement.
В случае уникода у вас и получается обычная строка, в случае списка строк уникода - список строк уникода :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB