我正在解析 csv 文件,并希望在出现非 ASCII 字符时将其删除。实际上,我只需要数字,但是当我尝试删除非数字字符时,我得到一个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.我究竟做错了什么 ?
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
一种可能的解决方案:您需要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))
添加回答
举报
0/150
提交
取消