如果 CSV 文件中的某些行是字符串类型而不是数字,我该如何删除它们?

How can I remove certain rows in a CSV file if they are string type rather than numeric?

提问人:Hermes3 提问时间:1/5/2022 更新时间:1/5/2022 访问量:20

问:

我有一个包含 10 列的数据集,其中两列应该是端口号(数字)。数据集很大,有超过 100 万行。有没有办法快速删除 sport 或 dport 值是字符串而不是数字的行?

CSV 操作 数据 清洗

评论

0赞 lawgik 1/5/2022
你用的是什么编程语言?许多不同的语言都有方法来比较一个值,以检查它是否在其标准库中是字母数字。您可以在解析 csv 时检查一下。
0赞 Hermes3 1/5/2022
Python 是我最满意的 - 谢谢。

答:

0赞 Zach Young 1/5/2022 #1

我非常喜欢使用 GoCSV,它提供了许多功能,例如您正在寻找的功能。

它是一个命令行工具,其过滤器命令将执行您想要的操作。

我模拟了这个简单的CSV:

Id,sport,dport
1,,443
2,8080,
3,Foo,22
4,9999,
5,Bar,
6,444,Baz

我运行这个:

gocsv filter -c 'sport','dport' -regex '[^\d]' -exclude input.csv

这是在“sport”或“dport”列中过滤与正则表达式“has a non-digit”匹配的任何行,然后排除该行(反转过滤器)......

...我得到这个输出:

Id,sport,dport
1,,443
2,8080,
4,9999,

可以通过转到其发布页面并下载适用于您的操作系统/体系结构的预构建二进制文件来安装它。