首页 > 解决方案 > 在 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

标签: pythoncsvvalidationseparatorsniffer

解决方案


您可以使用嗅探器并检查是否引发了错误。

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")

推荐阅读