Python 如果行中的条目不在列表中,则删除完整的行

Python 如果行中的条目不在列表中,则删除完整的行,python,Python,我试图解析list.txt中的每一行,如果change\u list中没有任何更改(数字),请删除整个条目(不仅仅是该数字),并创建一个新文件OUTPUT.txt,其中包含剩余的数字 在下面的示例中,change_list中不存在350166,因此整行“350882 348521 350166”被删除,只有剩下的一行被添加到output.txt 由于某种原因,我似乎没有得到想要的结果。有人能指出哪里出了问题吗 change_list=[] def changecheck(change) :

我试图解析
list.txt
中的每一行,如果
change\u list
中没有任何更改(数字),请删除整个条目(不仅仅是该数字),并创建一个新文件
OUTPUT.txt
,其中包含剩余的数字

在下面的示例中,
change_list
中不存在350166,因此整行“350882 348521 350166”被删除,只有剩下的一行被添加到
output.txt

由于某种原因,我似乎没有得到想要的结果。有人能指出哪里出了问题吗

change_list=[]
def changecheck(change) :
    changelist=['355199','352470','346917','350882','348521']
    if change in changelist:
        return 1
    else:
        return 0


with open('list.txt', 'r') as f:
    for line in f :
        line=line.strip()
        change_line = line
    print "change_line"
    print change_line

for element in change_line:
    change_list = element.split(' ')
    for changeid in change_list:
        print "changeid"
        print changeid
        returnVal = changecheck('changeId')
        if returnVal  == 1:
            #write the whole line to a new file
            with open('output.txt', 'r') as f:
                f.writelines(element)
档案:

list.txt
350882 348521 350166
346917 352470 
355199 

OUTPUT.txt
346917 352470 
355199 

将您的
changecheck
a
set
,然后在输入上构建一个生成器,将其拆分为单独的数字,并且只在文件中包含行中所有数字都在changecheck中的行,例如:

changelist = {'355199','352470','346917','350882','348521'}

with open('input') as fin, open('output', 'w') as fout:
    lines = (line.split() for line in fin)
    valid = (' '.join(line) + '\n' for line in lines if all(el in changelist for el in line))
    fout.writelines(valid)

您不需要使用1和0。如果changelist:with open…中有更改,您可以简单地使用
,我认为问题中的主要遗漏点是
'w'
标志。