将一个unicode字符列表转换为python中的希伯来字符串

时间:2011-08-29 19:46:02

标签: python unicode html-parsing

this线程解决方案之后,我设法获得了一堆列表,每个列表都是:

  

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

我认为那些是unicode字符但由于某种原因,我无法将它们转换回希伯来语。

我在链接的评论中尝试了建议的解决方案。我也尝试使用''.join,但它没有用。我得到的错误是:

  

错误类型:exceptions.UnicodeEncodeError 22:42:15 T:2806414192
  M:2425589760错误:错误内容:'ascii'编解码器无法编码
  位置0-4中的字符:序数不在范围内(128)

我试图将内容包装在unicode()中,但我得到的内容与上面的例子相同。

我如何实现这一目标?

注意:
我正在尝试解析this link

修改
我正在尝试使用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 个答案:

答案 0 :(得分:2)

这是一个unicode字符串, 希伯来语,您甚至可以直接在Python交互式shell上打印它。 e.g:

>>> 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

另请参阅this answer以获取有关Unicode和字符串编码的另一个简短说明。