首页 > 解决方案 > 尝试删除非 ASCII 字符时出现 Unicode 错误

问题描述

我正在解析 csv 文件,并希望在它们出现时删除它们。实际上,我只需要数字,但是当我尝试删除非数字字符时,我得到一个UnicodeEncodeError.

我有以下功能:

def remove_non_ascii(text):
    return ''.join(re.findall("\d+", str(text)))

也试过(只是为了删除非ASCII字符):

def remove_non_ascii(text):
    return ''.join(i for i in str(text) if ord(i)<128)

当我打印以下结果时,我得到了正确的结果(对于两个函数)

print(remove_non_ascii('E-Mail Adresse des Empfängers'))

但是,当我将该函数应用于数据框列df[col] = df[col].apply(remove_non_ascii)时,我得到了UnicodeEncodeError.

我究竟做错了什么 ?

标签: pythonpandasunicode

解决方案


一种可能的解决方案:您需要import string将功能更改为

setV = set(string.printable)
return ''.join(filter(lambda x: x in setV, text))

这将删除不在集合中的所有字符

刚刚注意到你说你只需要数字。这是一个更有用的解决方案,无需导入字符串:

def remove_non_ascii(text):
    setV = set("1234567890")
    return ''.join(filter(lambda x: x in setV, text))

推荐阅读