所以我使用TwitterSearch Library。功能很简单,可以打印Twitter搜索结果。
所以这是一个麻烦。你的推文是由TwitterSearch从这个词典(或列表)传递的。无论是实际的是什么)
tweet['text']
如果你的python 2.7有一个unicode,这个python无法解决,那就是BOOM。程序错误
所以我试着让它像这样
a=unicode(tweet['text'], errors='ignore')
print a
目的是我希望将unicode转换为字符串,同时忽略过程中未解析的unicode(这是我从文档中理解的。我可能无法理解文档所以想出这段代码)
我收到了这个可爱的错误信息。
typeError: decoding Unicode is not suported
我的问题
1:为什么?这个Unicode内容不是默认python库的一部分
2:我应该怎么做才能将unicode转换为字符串,而忽略过程中未解析的unicode
PS:这是我的第一个unicode问题,这是我现在能做的最好的事情。不要杀了我。
答案 0 :(得分:0)
您需要了解Unicode对象和字节字符串之间的区别。在Python 2.7中unicode
类是一个Unicode对象。这些已包含Unicode标准中定义的字符。根据我对您提供的证据的理解,您的tweet['text']
已经是unicode
个实例。
您可以打印type(tweet['text'])
:
>>> print type(tweet['text'])
<type 'unicode'>
现在unicode
个对象是一个概念的高级表示,它在计算机内存中没有单一的已定义表示。它们非常有用,因为它们允许您使用ASCII标准范围之外的字符,这些字符仅限于基本的拉丁字母和数字。但是计算机不会记住Unicode中的字符作为其形状,而是使用标准提供的数字并将其称为代码点。
另一方面,几乎所有计算机都使用字节操作。网络协议传输字节,输入和输出流传输字节。为了能够通过网络发送Unicode字符串,甚至在终端等设备上打印它,您需要使用通信双方(例如您的程序和终端)都能理解的协议。我们称之为编码。
>>> u'żółw'.encode('utf-8')
'\xc5\xbc\xc3\xb3\xc5\x82w'
>>> print type(u'żółw'.encode('utf-8'))
<type 'str'>
根据您选择的编码,有许多编码和单个unicode
对象通常可以编码为许多不同的字节字符串。要选择一个正确的,需要了解您想要使用结果字符串的上下文。如果您的终端理解UTF-8,则所有unicode
对象在发送到输出流之前需要编码为UTF-8 。如果它只能理解ASCII,那么你可能需要删除一些字符。
>>> print u'żółw'.encode('utf-8')
żółw
因此,如果Python的默认输出编码不正确或无法处理您尝试打印的所有字符,则可以始终手动编码对象并输出结果str
。但在此之前,请直接阅读您问题中与评论中链接的所有文件。