为了账号安全,请及时绑定邮箱和手机立即绑定

尝试删除非 ascii 字符时出现 Unicode 错误

尝试删除非 ascii 字符时出现 Unicode 错误

LEATH 2021-09-11 10:28:55
我正在解析 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))


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信