当我尝试使用时:
df[df.columns.difference(['pos', 'neu', 'neg', 'new_description'])].to_csv('sentiment_data.csv')
我得到了错误:
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud83d' in position 388: surrogates not allowed
我不知道此错误的含义以及如何解决此错误并将数据导出到csv / excel的方法。我已经提到过这个question,但我不太了解,也无法回答如何使用熊猫来做到这一点。
388位代表什么意思?字符'\ ud83d'是什么?
当我尝试导出到excel时出现不同的错误位置:
df[df.columns.difference(['pos', 'neu', 'neg', 'new_description'])].to_excel('sentiment_data_new.xlsx')
导出到excel时出错:
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud83d' in position 261: surrogates not allowed
为什么编码相同时位置会不同?
其他重复的问题没有回答如何使用pandas DataFrame逃脱此错误。
答案 0 :(得分:2)
此答案是对评论的回应,太长了,无法自行添加评论。
Unicode表情符号位于基本多语言窗格之外。代理对是一种使这些字形在UTF-16中直接表示为两个代码点的方法。
您可以这样将代理对强制解析为BMP外部的相应代码点:
>>> "\ud83d\ude04".encode('utf-16','surrogatepass').decode('utf-16')
'\U0001f604'
但是这种解决方案可能只会使您受益匪浅。
许多软件(例如IDLE)仅支持BMP,因为它实际上并没有使用UTF-16,而是其前身UCS-2(本质上是UTF-16),但不支持BMP之外的代码点。在IDLE中,print ('\U0001f604')
只会引发UnicodeEncodeError: 'UCS-2' codec can't encode character '\U0001f604' in position 0: Non-BMP character not supported in Tk