我正在创建一个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
尽管在第v1列中有NA,但它应该引发一个与Srno = 1一致的异常,在第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")
提前致谢!
答案 0 :(得分:1)
看看这是否符合您的要求:
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")