【发布时间】:2019-01-23 05:10:17
【问题描述】:
我有一个数据库文件“db.txt”,格式如下:
"sg_number":1,"blablabala"....
"sg_number":2,"blablabala"....
"sg_number":10,"blablabala"....
"sg_number":9,"blablabala"....
等等。
我想删除所有包含 '"sg_number": i' 的行,因为 i 在 (1, 8) 范围内,并将剩余的行输出到另一个文件 "db_filtered.txt"
于是我写了如下代码:
infile = open("db.txt", "r")
newopen = open('db_filtered.txt', 'w')
for i in range(1,8):
a='"sg_number":'+ str(i) + ','
for line in infile :
if a in line:
line = line.replace('.' , '')
else:
newopen.write(line)
newopen.close()
但是,生成的 db_filtered.txt 仍然包含 db.txt 中的所有内容。我期望删除“sg_number”小于 9 的行。
我注意到的是,删除第 6 行中的 "+ ','" 会导致删除任何包含 "sg_number":1 的行,即第 1 行和第 3 行。但是第 2 行满足条件 "i in range(1, 8)" 不会被删除。
我可以知道这里有什么问题以及我应该对代码进行哪些更正以完成它应该做的事情吗?
非常感谢!
【问题讨论】:
-
尝试了解代码执行路径,您的代码会检查每个
i的整个文件,但如果没有匹配,它仍然写入到文件。