【问题标题】:Validating .csv file based on delimiter in Python在 Python 中基于分隔符验证 .csv 文件
【发布时间】:2023-03-30 05:05:01
【问题描述】:

我正在尝试编写一个函数来检查 .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

【问题讨论】:

  • 但嗅探器只测试第一行。所以对于大文件来说这不是问题。关于您的问题,您假设嗅探器不起作用,但您能用minimal reproducible example 证明这一点吗?
  • 请更新您的问题edit,并提供示例输入

标签: python csv validation separator sniffer


【解决方案1】:

您可以使用嗅探器检查是否抛出错误。

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

【讨论】:

  • 谢谢,我很高兴它有帮助:)
猜你喜欢
  • 2021-12-17
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 2020-07-06
  • 2011-12-06
  • 1970-01-01
  • 2015-08-09
  • 2017-02-09
相关资源
最近更新 更多