猿问

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

我正在解析 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.


我究竟做错了什么 ?


LEATH
浏览 147回答 1
1回答

大话西游666

一种可能的解决方案:您需要import string将函数更改为setV = set(string.printable)return ''.join(filter(lambda x: x in setV, text))这将删除不在集合中的所有字符刚刚注意到你说你只需要数字。这是一个更有用的解决方案,无需导入字符串:def remove_non_ascii(text):&nbsp; &nbsp; setV = set("1234567890")&nbsp; &nbsp; return ''.join(filter(lambda x: x in setV, text))
随时随地看视频慕课网APP

相关分类

Python
我要回答