2015-05-27 43 views
1

我想通过使用Twitter的API与Python的Twitter bios。Python/Tweepy UnicodeEncodeError

但是我得到这个错误:

newFile.writerow(info)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

我认为,当有人在他们的生物或网名,但是,没有了以下解决方案的表情符号出现这种情况似乎停止错误:

  • .encode( 'unicode_escape')
  • .encode( 'UTF8')
  • .encode( 'UTF8')

下面是当前的代码

for follower in followers.items(): 
    info=[] 
    name =follower.name.encode('unicode_escape') 
    screen_name = follower.screen_name.encode('unicode_escape') 

    userId = userId + 1 

    #add values to array 
    values.append(userId) 
    values.append(name) 
    values.append(screen_name) 

    csvFile = open('followers.csv','a') 
    newFile =csv.writer(csvFile) #imported csv 
    #add list of headers as a new row 
    newFile.writerow(info) 
    #close file 
    csvFile.close() 
+0

我得到: “类型错误: '忽略' 是此功能的无效关键字参数” – auto

+0

尝试'.encode(“UTF -8',错误='忽略')'@auto – ZdaR

+0

“newFile.writerow(info) UnicodeEncodeError:'ascii'编解码器不能编码位置0-4的字符:序号不在范围内(128)” 应该我将这些添加到其他地方?我只是在生物描述,用户名和姓名后添加它们。没有别的东西似乎有意义。 – auto

回答

1

的一个主要问题是,Python的CSV模块是不是Unicode安全 - 请参阅警告在https://docs.python.org/2/library/csv.html

周围的工作,因为你发现被编码所有值UTF-8第一:

name = follower.name.encode('UTF-8') 
screen_name = follower.screen_name.encode('UTF-8') 

你现在打的问题是Python的仍试图按自己的价值观编码为ASCII。这是由于您打开文件进行写入的方式。添加b二进制写作:

csvFile = open('followers.csv','ab') 

在其完整的形式:

for follower in followers.items(): 
info=[] 
name = follower.name.encode('UTF-8') 
screen_name = follower.screen_name.encode('UTF-8') 

userId = userId + 1 

#add values to array 
values.append(userId) 
values.append(name) 
values.append(screen_name) 

csvFile = open('followers.csv','ab') 
newFile =csv.writer(csvFile) #imported csv 
#add list of headers as a new row 
newFile.writerow(info) 
#close file 
csvFile.close()