2015-02-08 87 views
0

我尝试分析一些推文,我从高音单元获得,但似乎我有一个编码问题,如果您有任何想法..python:unicodeEncodeError:'charpmap'编解码器无法编码字符' u2026'

import json 

#Next we will read the data in into an array that we call tweets. 
tweets_data_path = 'C:/Python34/TESTS/twitter_data.txt' 

tweets_data = [] 
tweets_file = open(tweets_data_path, "r") 


for line in tweets_file: 
    try: 
     tweet = json.loads(line) 
     tweets_data.append(tweet) 
    except: 
     continue 

print(len(tweets_data))#412 tweets 
print(tweet) 

我得到的错误: 文件 “C:\ Python34 \ lib中\编码\ cp850.py”,第19行,在编码返回codecs.charmap_encode(输入,self.errors,encoding_map)[0] unicodeEncodeError :'charpmap'编解码器不能在位置1345编码字符'\ u2026':字符映射到undefined

在工作中,我没有得到错误,但我有python 3.3,它是否有所作为?你认为呢?

-----编辑

从@MarkRamson注释回答我的问题

+1

你能提供线路,其中UnicodeEncodeError发生?你是怎么写这些推文的?你用UTF-8编码了吗? – Raito 2015-02-08 21:12:21

+0

今晚我会看看,但是我从Twitter API获取了推文,并检查了该文件的编码是UTF-8 – 2015-02-09 11:07:19

+1

问题是您正在运行的控制台无法处理您尝试的字符打印:'...'查看http://stackoverflow.com/questions/3597480/how-to-make-python-3-print-utf8了解一些提示。 – 2015-02-09 21:29:15

回答

2

应指定打开文件时的编码:

tweets_file = open(tweets_data_path, "r", encoding="utf-8-sig") 
+1

utf-8-sig是一个受过教育的猜测吗? ;)然后你应该争辩。 – 2015-02-08 21:14:23

+0

@ Jan-PhilipGehrcke:U + 2026是在推文中有意义的省略号字符。另外,UTF-8是任何Twitter API可能使用的最可能的编码。所以是的,我会说这是一个有教育意义的猜测......(和-sig部分只是一个预防措施 - 如果有BOM,它会处理它,如果没有,没有损害)。 – 2015-02-08 21:15:45

+0

好吧,一半说服了。对于其他读者来说,显而易见的是,数据来自随机文件twitter_data.txt,因此我们实际上无法可靠地知道其中的数据是如何编码的。 – 2015-02-08 21:25:19

相关问题