首页 > 解决方案 > 用python比较两个文本文件之间的值

问题描述

我有两个文本文件,我想从中创建一个新文件。

一个文件的数据如下所示: mf-bom.xyrs

J25 5193.94 -3669.45    90.0    1   1   0.0 0.0 DF40C-100DS-0.4V        1   DF40C-100DS-0.4V
J24 4778.15 -3592.17    270.0   1   1   0.0 0.0 DF40C-100DS-0.4V        1   DF40C-100DS-0.4V
TP47    5232.28 -3688.98    0.0 2   1   0.0 0.0 DO NOT POPULATE     1   DNP
TP19    4905.98 -3583.0 0.0 2   1   0.0 0.0 DO NOT POPULATE     1   DNP
TP15    5206.3  -3796.85    0.0 2   1   0.0 0.0 DO NOT POPULATE     1   DNP

另一个具有如下所示的数据:single-bom.bom

114.119, 114.119, "R12"
114.633, 114.633, "R25"
117.028, 117.028, "C20"
135.495219, 135.495219, "TP34"
137.56, 137.56, "J24"
147.56, 137.56, "J25"

我想查看最后一项single-bom.bom并获得那里的价值......在这种情况下,它是 R12。然后,我想查看每行中的第一个条目,mf-bom.xyrs看看是否有匹配项(“R12”)。如果有,请将整行复制并附mf-bom.xyrs加到另一个文件中。

我试过用一个列表将它们都带入python(例如)


with open('mf-bom.xyrs') as f:
    mf_bom = f.read().split("\t")

但这制作了一个很长的一维列表,并且没有保留行(我的意思是换行符)。

我尝试过的所有其他东西都太愚蠢了,无法在这里发布......我觉得我在这里撞到了头,错过了如果你使用得当,python 是多么容易的一点。

标签: pythonlistparsingtextio

解决方案


这不是一个完整的答案,但我想解决您尝试读取文件的问题。

当你这样做时:

with open('mf-bom.xyrs') as f:
    mf_bom = f.read().split("\t")

您正在阅读整个文件,然后将其拆分到选项卡上……所以您当然会得到一个大列表。你想独立分割文件的每一行,所以像这样:

with open('mf-bom.xyrs') as f:
    mf_bom = []
    for line in f:
      mf_bom.append(line.split('\t'))

在此代码之后,mf_bom将是一个列表列表,每行一个,例如:

[
  ['J25', '5193.94', '-3669.45', '90.0', '1', '1', '0.0', '0.0', 'DF40C-100DS-0.4V', '1', 'DF40C-100DS-0.4V'],
  ...
]

你可以这样写更简洁:

with open('mf-bom.xyrs') as f:
    mf_bom = [line.split('\t') for line in f]

您也可以使用该csv模块来读取此文件。


推荐阅读