При небольшом форматировании функциональность может быть легко достигнута с помощью Pandas.
Второй файл должен быть правильно отформатирован как CSV. Я взял ваш ввод и отформатировал его, как показано ниже, с некоторыми полями заголовка, как показано ниже:
Latitute Longitude Indicator someColumn1 someColumn2 someInteger
33.492513889 9.217400000 ABCDE YYYY XX 2118994
16.000000000 -30.000000000 CJSIA YYYY XX 2115145
17.000000000 -30.000000000 OALXM YYYY XX 2115145
18.000000000 -30.000000000 DRTYJ YYYY XX 2115145
ПРИМЕЧАНИЕ: я использую \ t-> tab в качестве разделителя
Сама программа очень проста :
import pandas as pd
toSearch= []
with open('firstFile.txt', 'r') as fd:
toSearch= fd.read().split('\n')
df = pd.read_csv('secondFile.txt', delimiter='\t')
df[df['Indicator'].isin(inputs)][['Indicator', 'Latitute', 'Longitude']].to_csv('output.txt', index=False)
Если вы не хотите использовать pandas, мы все же можем добиться этого, просматривая строку за строкой и ища строку.
toSearch= []
with open('firstFile.txt', 'r') as fd:
toSearch= fd.read().split('\n')
with open('secondFile.txt', 'r') as fd, open('output.txt', 'w') as fout:
while fd:
line = fd.readline()
if not line:
break
line_words = line.split('\t')
if line_words[2] in toSearch:
fout.write({}\t{}\t{}\n".format(line_words[2],line_words[0],line_words[1]))