python - 在 Python 中基于分隔符验证 .csv 文件
问题描述
我正在尝试编写一个函数来检查 .csv 文件中的所有分隔符是否都是“;”。我的尝试是使用csv.Sniffer()
:
import csv
def check_data_validity(file):
sniffer=csv.Sniffer()
dialect = sniffer.sniff(file)
if dialect.delimiter != ';':
return False
无论文件如何,我总是得到“假”。我想可以通过阅读每一行并检查分隔符是什么来做到这一点,但我发现这对于大文件来说非常令人生畏。
原始格式的文件示例如下:
timestamp_1;timestamp_2;Value_1;Value_2;Value_3;Result
1509494402000;2017-11-01T00:00:02Z;292.05;;26.89;0.0;;;
1509494410000;2017-11-01T00:00:10Z;6.0;;4.0;1.0;;;
1509494412000;2017-11-01T00:00:12Z;29.23;;4.0;0.0
解决方案
您可以使用嗅探器并检查是否引发了错误。
import csv
def check_data_validity(file):
with open(file, newline = "") as csvfile:
try:
dialect = csv.Sniffer().sniff(csvfile.read(1024), delimiters = ";")
print("Delimiter is ;")
except:
print("Wrong Delimiter")
推荐阅读
- python - 如何在 pyspark 数据框中创建日期时间列?
- extjs - 关于 ExtJS 图表中显示小数字的问题
- python - 重置程序后python字典是否会删除其内容
- javascript - 如何在只读模式和输入模式之间切换html标签?
- php - Symfony 5.1 使用服务创建扩展
- django - 如何在 Django 中将对象属性从视图传递到模板?
- angular - ngbRadioButtonGroup 角度检查
- c# - 通过 json api 端点上传 base64 编码文件遇到状态码 400
- java - 如何检查 .doc 文件中是否存在任何嵌入对象?
- go - 从另一个模块导入包