使用python

时间:2019-05-02 17:38:20

标签: python list parsing text io

我有两个要用于创建新文件的文本文件。

一个文件的数据如下: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的难易之处。

1 个答案:

答案 0 :(得分:0)

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

执行此操作时:

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模块来读取此文件。