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

时间:2018-12-08 19:27:22

标签: python pandas 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

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案: 您需要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))