在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文档中的位置。
答案 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和字符串编码的另一个简短说明。