【发布时间】:2019-02-12 14:22:16
【问题描述】:
使用 for 循环处理 pandas.df 时。我通常会遇到错误。删除错误后,我将不得不从数据帧的开头重新启动 for 循环。如何从错误位置启动 for 循环,摆脱重复运行它。 例如:
senti = []
for i in dfs['ssentence']:
senti.append(get_baidu_senti(i))
在上面的代码中,我试图通过api进行情感分析并将它们存储到一个列表中。但是,api只输入GBK格式,而我的数据是用utf-8编码的。所以它通常会遇到这样的错误:
UnicodeEncodeError: 'gbk' codec can't encode character '\u30fb' in position 14: illegal multibyte sequence
所以我必须手动删除'\u30fb'之类的特定项目并重新启动for循环。此时,列表“senti”已经包含了很多数据,所以我不想放弃它们。我可以做些什么来改进 for 循环?
【问题讨论】:
-
编码时为什么不指定错误处理程序?
-
@MartijnPieters 我要发布GBK格式的数据,编码时如何写错误处理程序?我唯一能想到的就是删除错误字符。
-
这就是错误处理程序可以为您做的:
.encode('gbk', 'ignore')跳过无法编码的代码点。 -
您确定您的数据被编码为 UTF8 吗?您似乎有字符串值,因此 Unicode 值已经从字节解码(UTF-8 意味着您有二进制编码数据)。
标签: python pandas for-loop utf-8 gbk