我正在尝试解析list.txt
中的每一行,如果change_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
答案 0 :(得分:2)
让你的changecheck
成为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)