【问题标题】:Comparing Non-duplicate File Content Format of two files in Python比较 Python 中两个文件的非重复文件内容格式
【发布时间】:2018-09-10 02:18:49
【问题描述】:

我想知道是否有一种方法可以比较 python 中逗号分隔值 (csv) 文件的文件内容格式。我有一个脚本,它接受一个输入 csv 文件并给出生成的输出。我尝试在给定的一组文件上运行脚本,但收到了一条错误消息,其中包含给我的文件。为了测试脚本是否是问题所在,我使用一组具有相同格式的不同文件运行了脚本,这很有效。这使我相信其中一个文件的格式不正确。我尝试以视觉方式检查格式,但列和行太多,无法检查格式问题和列数据类型。

一个例子:

File_1.csv 内容包含:

Field_1,Field_2,Field_3, Field_4, ...
ABC, 2012, CH4, 31231.123, ...
ABC2, 20134, H20, 3234.3432, ...
..., ..., ..., ..., ...

File_2.csv 内容包含:

Field_1, Field_2, Field_3, Field_4, ...
BBC, 324, OH, 323.232, ...
BBC2, 2112, HCL, 23.2324, ...
..., ..., ..., ..., ...

这个想法是两个使用 file_1.csv 的格式来确保 file_2.csv 具有相同的格式和数据类型。它基本上会检查文件二是否遵循与文件一相同的格式:

<Str>, <Str>, <Str>, <Str>, ...
<Str>, <int>, <Char>, <float>, ...
<Str>, <int>, <Char>, <float>, ...
<Str>, <int>, <Char>, <float>, ...

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

【问题讨论】:

  • 我尝试在一组给定的文件上运行脚本,但收到一条错误消息该错误消息是否提供了有关确切错误的线索?
  • 您好@JohnGordon,我知道了如何编写它。如果您想查看 Mauricio Martinez 问题/帖子,我确实遇到了正则表达式模式匹配的问题。

标签: python file csv format comparison


【解决方案1】:

您可以自己快速完成此操作。我假设您在尝试将其中一个字段类型转换为 int/char 或其他内容时遇到错误。您可以使用 try-except 语句来尝试并查明错误。这是一些伪代码:

for line in file:
    # separate the fields
    fields  = line.split(',')
    try:
        field1 = int(fields[0])
    except:
        # you had an error

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

【讨论】:

  • 您好@MauricioMartinez,我了解上面代码中的 line.split(',') 。我尝试了它的实现。但是,我遇到了 re.split(r',(?![^"]")',content1.iloc[0][0])) 的问题。我尝试使用前瞻来避免双引号中的逗号,如下所示:,"1,4-Benzenediol; Hydroquinol; p-Quinol", 我适用于以下 ',"2,6-Diamino-4-hexenoic acid, 9CI" ,',但不是后者。任何帮助将非常感激。我很肯定我没有正确编写前瞻正则表达式,并试图弄清楚。
猜你喜欢
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2020-01-31
  • 1970-01-01
相关资源
最近更新 更多