【发布时间】:2021-10-25 19:38:00
【问题描述】:
在处理包含大约 5 种语言(英语、法语、西班牙语、德语、意大利语、瑞典语)的 CSV 文件时,我遇到了一些挑战。目的是将 OneCol(我的 df 中的连接列)中的值合并到不同的字典中。另一个条件是根据国家列进行合并(例如,法语将使用 FR 字典进行检查)。我在阅读文件时遇到了麻烦,我尝试过的一切都结束了,但完全失败了,我觉得有点筋疲力尽。字典还包含特殊的字符/字典,在这种情况下,是我将它们转换为列表的数据框。
我得到的错误是:'ascii' codec can't decode byte 0xe4 in position 89: ordinal not in range.
我的代码如下所示:
df['ResultG'] = np.where(df["Country"].isin(['1','2','12']), f['OneCol'].apply(lambda x: ' '.join(list(set(x.split()) & set(words.words())))), np.where(df["Country"]=='3', df['OneCol'].apply(lambda x: ' '.join(list(set(x.split()) & set(list_fr)))), "Other"))
我尝试了一切,从将文件设置为 utf-8 到在 Notepad++ 中实际更改文件。欢迎任何想法或建议。谢谢
【问题讨论】:
-
0xe4 是一个 UTF-8 连续字节,但它在那里被视为 ascii 编码的字符串。您是否尝试在 read_csv (stackoverflow.com/questions/36462852/…) 中设置
encoding="utf-8"? -
谢谢,我通过进入 notepad++ 并将文件从 ANSI 转换为 UTF-8 解决了这个问题。另外,我认为从 NLTK 安装所有软件包会弄乱我的语法。现在全部排序。
标签: python pandas dataframe ascii multilingual