在Python中将Unicode字符列表转换为希伯来字符串
根据这个讨论的解决方案,我成功得到了很多列表,每个列表看起来像这样:
[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和字符串编码做了另一个简短的解释。