преобразование списка символов Юникода в строку на иврите в Python - PullRequest
2 голосов
/ 29 августа 2011

Следуя этому решению потоков, мне удалось получить несколько списков, каждый из которых выглядит следующим образом:

[u '\ u05ea \ u05d0 \ u05de \ u05d9 \ u05df\ u05dc \ u05d9 ']

Я предполагаю, что это символы Юникода, но по какой-то причине я не могу преобразовать их обратно в иврит.

Я попробовал предлагаемое решение в комментариях по ссылке.Я также пытался использовать ''.join, но это не сработало.Я получаю сообщение об ошибке:

Тип ошибки: exceptions.UnicodeEncodeError 22:42:15 T: 2806414192
M: 2425589760 ОШИБКА: Содержание ошибки: кодек «ascii» не может кодировать
символы в позиции 0-4: порядковый номер не в диапазоне (128)

Я пытался обернуть вещи в unicode(), но все, что я получил, было таким же, как в примере выше.

Как мне этого добиться?

Примечание:
Я пытаюсь разобрать эту ссылку .

Редактировать:
Я пытаюсь преобразовать список в строку, используя join, а затем распечатать его.Вот соответствующий кусок кода:

soup = BeautifulStoneSoup(link, convertEntities=BeautifulStoneSoup.XML_ENTITIES)
    programs = soup('ul')
    for i,prog in enumerate(programs):
        if i==(4+getLetterValue(name)):
            j = 0
            while j < len(prog('li')):
                li = prog('li')[j]
        link = li('a')[0]
        url = link['href']
                text = link.contents
                print ''.join(text)

link - строка.и getLetterValue(name) возвращает целое число, указывающее позицию в HTML-документе.

1 Ответ

2 голосов
/ 30 августа 2011

Это строка unicode, на иврите , и вы даже можете напечатать ее непосредственно на интерактивной оболочке Python.Например:

>>> print u'\u05ea\u05d0\u05de\u05d9\u05df \u05dc\u05d9'
תאמין לי

Если , вам действительно нужно по какой-то причине преобразовать его в необработанную строку байтов (объект str), вам необходимо указать кодировку байтовой строки, поскольку текст может быть представлен во многих различных кодировках.

Краткий ответ: если вы хотите использовать UTF-8 для кодирования текста, вы можете использовать:

your_unicode_text.encode('utf-8')

Если вы собираетесь использовать другую кодировку, просто измените имя кодировки, приведенное выше.

Для справки о том, как Python работает с текстом Unicode и распространенными проблемами, см .: http://docs.python.org/howto/unicode.html

См.также этот ответ для другого краткого объяснения кодировки Unicode и строк.

...