我试图从输入文件“list.txt”中删除一个无效的\u change变量中的id,并创建一个文件results.txt,如下所示..有人能提供有关如何修复此问题的输入吗?下面有一个示例输入和预期输出
'''
INPUT(list.txt:-
350882 348521 350166
346917 352470
360049
EXPECTEDOUTPUT(results.txt):-
350882 348521 350166
346917
360049
'''
invalid_list=['352470','12345']
f_write = open('results.txt', 'wb')
with open('list.txt','r') as f :
for line in f :
#delete the whole line if any invalid gerrit is presnet
gerrit_list = line.strip().split(' ')
ifvalid = True
for gerrit in gerrit_list:
try: # check if invalid gerrit is present
invalid_gerrit.index(invalid_change)
ifvalid = False
break
except:
pass
if ifvalid:
f_write.write(line)
f_write.close()
geru列表中的每一项都是一个单独的数字。您不需要查找无效更改是否包含在数字中。事实上,这可能会导致错误。您只需直接遍历gerrit\u list中的项,然后丢弃与无效\u list匹配的项:
问题是当你到达这条线时:
ifvalid
变量被设置为False
,因此这个特定的行(即使调整)不会被写入输出文件可能的解决方案:
如果您有任何问题,请告诉我们
代码中的其他问题包括:
NameError
,而您应该只捕获ValueError
,或者更确切地说,执行包含in
关键字的测试)-这就是您没有看到与缺少invalid_change
和invalid_gerrit
变量相关的错误的原因with
语句中使用它,而不是打开和关闭f_write
str.split()
默认情况下按空格进行拆分,并从结果中删除空字符串,因此不必编写line.strip().split(' ')
,只需编写line.split()
相关问题 更多 >
编程相关推荐