python - 尝试删除非 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
.
我究竟做错了什么 ?
解决方案
一种可能的解决方案:您需要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))
推荐阅读
- r - 如何在 R Studio 中使用唯一名称命名嵌套 for 循环的输出?
- asp.net-mvc - 如何让两次插入都成功和失败?
- java - 更新集合的最佳方法
- python - Plotly:如何自定义 3D 散点图的符号?
- python - 裁剪图像时出现 Python 错误:图块无法扩展到图像之外
- javascript - LeetCode 两和问题 - 结果未定义
- dialogflow-es - Dialogflow 权限被拒绝:IAM 权限
- javascript - StatelessScriptUpdateProcessorFactory 不通过脚本
- java - 如何测试仅创建客户端并发送消息的 void 方法?
- javascript - 无法在 vue-chartjs 上动态渲染我的图表