如何检查 CSV 文件的内容是否遵循 Python 中的特定格式?

How to check if content of CSV file follows a specific format in Python?

我正在创建一个 python 程序,它将 CSV 文件作为输入(文件位置作为命令行),在进行任何预处理之前,它会断言文件内容是否为特定格式如果不是,则向用户抛出异常,说明选择正确的文件。

内容应该是这样的:

Sr.no .  Codes .  v1 .     v2 .     v3 .     v4 .   ... v300
1 .      code1 .  val1 .   val2 .   val3 .   NA .   ... NA
2 .      code2 .  val4 .   NA .     NA .     NA .   ... NA
3 .      code3 .  val5 .   val6 .   NA .     NA .   ... NA
4 .      code4 .  val7 .   val8 .   val9 .   NA .   ... NA
.
.

基本上它应该是一个CSV文件,前两列是SrNo。和代码以及接下来的 300 列作为一些值,然后是 'NA' 最多 300.

如果用户上传这样的东西

Sr.no .  Codes .  v1 .     v2 .      v3 .    . . . . . v300
1 .      code1 .  NA .     val1 .    NA .    . . . . . NA 
2 .      code2 .  val2 .   val3 .    NA .    . . . . . NA

它应该根据 Srno=1 引发异常,尽管 v1 列中有 NA,但 v2 列中有一个值。

想知道如何使用 Python 断言文件内容是否采用这种格式(示例代码片段会有所帮助)。此外,我还可以从中学习如何断言文件内容内容,不仅针对这种格式,还针对通用格式。

目前,我已经到达这里,需要完成assert_format功能

import sys
import csv

def assert_format(file_name):

    csv_file = open(file_name)
    reader = csv.reader(csv_file)

    #code to check format

    return True

file_name = sys.argv[1]

if assert_format(file_name):
    print("format is correct")
else:
    print("choose correct file")

提前致谢!

看看这是否符合您的要求:

import sys
import csv
def assert_format(file_name):
    with open(file_name, 'rb') as csvfile:
        reader = csv.reader(csvfile, delimiter='.')
        for row in reader:
            flag=False
            for cell in row:
                if(cell == 'NA' and not flag):
                        flag=True
                elif(cell == 'NA' and flag):
                        return False
    return True

file_name = sys.argv[1]

if assert_format(file_name):
    print("format is correct")
else:
    print("choose correct file")