我想知道是否有一种方法可以比较python中逗号分隔值(csv)文件的文件内容格式。我有一个脚本,它接受输入的csv文件并给出生成的输出。我尝试在给定的文件集上运行脚本,但收到给出的文件错误消息。为了测试脚本是否是问题,我使用一组具有相同格式的文件运行了脚本,并且可以正常工作。这使我相信其中一个文件的格式不正确。我尝试过目视检查格式,但是列和行太多,无法检查格式问题和列数据类型。
一个例子:
File_1.csv内容包含:
c_name = []
for i in items:
qs = Items.objects.filter ( id = i ).values ( 'item')
_df = pd.DataFrame.from_records ( qs )
df = df.join ( _df.item, how='outer', rsuffix= i )
c_name.append(i.number)
df.columns = c_name
File_2.csv内容包含:
Field_1,Field_2,Field_3, Field_4, ...
ABC, 2012, CH4, 31231.123, ...
ABC2, 20134, H20, 3234.3432, ...
..., ..., ..., ..., ...
想法是两个使用file_1.csv的格式来确保file_2.csv具有相同的格式和数据类型。实际上,它将检查文件2是否遵循与文件1相同的格式:
Field_1, Field_2, Field_3, Field_4, ...
BBC, 324, OH, 323.232, ...
BBC2, 2112, HCL, 23.2324, ...
..., ..., ..., ..., ...
假定文件一具有正确的列名格式和行数据类型。是否编写了比较文件格式和数据类型的程序/脚本?还是我必须从头开始?
答案 0 :(得分:0)
您可以自己快速完成此操作。我假设您在尝试将字段之一强制类型转换为int / char或其他内容时遇到错误。您可以使用try-except语句尝试找出错误。这是一些伪代码:
for line in file:
# separate the fields
fields = line.split(',')
try:
field1 = int(fields[0])
except:
# you had an error
很显然,如果您有很多字段,这可能很乏味,但是我假设您已经在代码中编写了这样的内容。