比较Python中两个文件的非重复文件内容格式

时间:2018-09-10 02:18:50

标签: python file csv format comparison

我想知道是否有一种方法可以比较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, ...
..., ..., ..., ..., ...

假定文件一具有正确的列名格式和行数据类型。是否编写了比较文件格式和数据类型的程序/脚本?还是我必须从头开始?

1 个答案:

答案 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

很显然,如果您有很多字段,这可能很乏味,但是我假设您已经在代码中编写了这样的内容。