在Python中将Unicode字符列表转换为希伯来字符串

2 投票
1 回答
6720 浏览
提问于 2025-04-17 00:34

根据这个讨论的解决方案,我成功得到了很多列表,每个列表看起来像这样:

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

我猜这些是unicode字符,但出于某种原因,我无法将它们转换回希伯来语。

我尝试了链接中评论里建议的解决方案。我还试过用''.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 个回答

3

这是一个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和字符串编码做了另一个简短的解释。

撰写回答