我正在尝试使用带有Python的Twitter API来浏览Twitter bios。
但是我收到了这个错误:
newFile.writerow(信息)
UnicodeEncodeError:'ascii'编解码器不能 编码位置0-4的字符:序数不在范围内(128)
我认为当有人在他们的生物或屏幕名称中有表情符号时会发生这种情况,但以下解决方案似乎都没有阻止错误:
这是当前的代码
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 :(得分:2)
一个主要问题是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()