Python 将一个txt文件中的字符串与另一个txt文件中的字符串进行比较

Python 将一个txt文件中的字符串与另一个txt文件中的字符串进行比较,python,string,python-3.x,Python,String,Python 3.x,我正在编写一个脚本,将用于日常自动化 我有两个文件,一个是包含CUSIP列表的静态文件。第二个文件是一个类似以下内容的数据文件: 所以我要做的是迭代静态文件的每个cusip,并检查它是否在上面的任何一行中。如果找到该行,则我们将从新文件中删除该行 import csv bond_list = 'BondFilterList.txt' #containes list of cusips dataport_file = 'test.scx' #contained the <

我正在编写一个脚本,将用于日常自动化

我有两个文件,一个是包含CUSIP列表的静态文件。第二个文件是一个类似以下内容的数据文件:


所以我要做的是迭代静态文件的每个cusip,并检查它是否在上面的任何一行中。如果找到该行,则我们将从新文件中删除该行

import csv

bond_list = 'BondFilterList.txt'  #containes list of cusips
dataport_file = 'test.scx'        #contained the <SCX... data
output_file = 'out.scx'

data = []

with open(bond_list, 'r') as bl, open(dataport_file, 'r') as df:

    for cusip in bl:
        lines = [y.strip() for y in df]
        for line in lines:
            if cusip in line:
                print("Matched")
            else:
                data.append(line)


with open(output_file, "w") as output:
     writer = csv.writer(output, lineterminator = '\n', escapechar = ' ',     quoting = csv.QUOTE_NONE)
     for x in data:
         writer.writerow([x])

output.close
导入csv
bond_list='BondFilterList.txt'#包含CUSIP列表
dataport_file='test.scx'#包含
这是两个文件迭代器上的双循环。内部循环只有在第一次时才能正常工作。其他时候它甚至不会输入,因为
df
到达了文件的末尾

重写:

lines = [y.strip() for y in df]  # listcomp not gencomp: compute a real list
for cusip in bl:
    for line in lines:   

这是我的最后代码,再次感谢Jean的帮助

import csv

bond_list = 'BondFilterList.txt'  #containes list of cusips
dataport_file = 'test.scx'        #contained the <SCX... data
output_file = 'out.scx'

data = []

with open(bond_list, 'r') as bl, open(dataport_file, 'r') as df:
    lines = [y.strip() for y in df]
    cusips = [cusip.upper().strip() for cusip in bl]

    for line in lines:    
         if not any(cusip in line for cusip in cusips):                
            data.append(line)

with open(output_file, "w") as output:
     writer = csv.writer(output, lineterminator = '\n', escapechar = ' ', quoting = csv.QUOTE_NONE)
     for x in data:
         writer.writerow([x])

output.close
导入csv
bond_list='BondFilterList.txt'#包含CUSIP列表

dataport_file='test.scx'#包含您的内部循环
中的行(df中y的y.strip())
在第一次迭代时使用文件迭代器。请改为创建一个列表。谢谢,由于某些原因,我仍然无法获得任何匹配项,并且if语句在每行上都返回false。我将
打印(cusip,line)
就在
if cusip in line:
之前。这应该很有教育意义。中大奖!谢谢你的指导!
import csv

bond_list = 'BondFilterList.txt'  #containes list of cusips
dataport_file = 'test.scx'        #contained the <SCX... data
output_file = 'out.scx'

data = []

with open(bond_list, 'r') as bl, open(dataport_file, 'r') as df:
    lines = [y.strip() for y in df]
    cusips = [cusip.upper().strip() for cusip in bl]

    for line in lines:    
         if not any(cusip in line for cusip in cusips):                
            data.append(line)

with open(output_file, "w") as output:
     writer = csv.writer(output, lineterminator = '\n', escapechar = ' ', quoting = csv.QUOTE_NONE)
     for x in data:
         writer.writerow([x])

output.close