сравнение значений между двумя текстовыми файлами с помощью Python - PullRequest
0 голосов
/ 02 мая 2019

У меня есть два текстовых файла, из которых я хочу создать новый файл.

Один файл содержит данные, которые выглядят так: 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 голосов
/ 02 мая 2019

Это не полный ответ, но я хотел отреагировать на вашу попытку прочитать файл.

Когда вы делаете это:

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 для чтения этого файла.

...