我正试图解析一个巨大的50k行文件,在这个文件中,我必须删除预定义列表中以单词present开头的任何行。
目前我已经尝试了下面的方法,但输出文件(db2unew)没有按预期工作-
rem = ['remove', 'remove1', 'remove2'....., 'removen']
inputFile = open(r"C:\file", "r")
outputFile = open(r"C:\file_12", "w")
lines = inputFile.readlines()
inputFile.close()
for line in lines:
for i in rem:
if line.startswith(i):
outputFile.write('\n')
else:
outputFile.write(line)
我得到的文件与我最初放入的输出相同。。。脚本没有删除以列表中任何字符串开头的行。
你能帮助理解如何实现这一点吗?
3条答案
按热度按时间fwzugrvs1#
当前,您将检查行是否以删除列表中的一个单词开头,每次检查一个单词。例如:
如果该行以“rem df…”开头,并且在循环中检查该行是否以“remove”开头,则if语句返回false并将该行写入输出文件。
您可以尝试以下方法:
这个
any
仅关键字返回False
如果所有元素都是False
.xxhby3vn2#
使用
tuple
而不是list
对于str.startswith
.4jb9z9bj3#
有时这可能是由前导/尾随空格引起的。
尝试使用
strip()
检查一下。