Python не может найти строку в файле, когда строка только там - PullRequest
0 голосов
/ 23 января 2019

У меня есть файл базы данных "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 в диапазоне (1, 8) », не удаляется.

Могу ли я знать, что здесь не так и какие исправления мне следует внести?сделать для кода, чтобы сделать то, что он должен делать?

Большое спасибо!

1 Ответ

0 голосов
/ 23 января 2019
new = infile.readlines() 
for line in new:
    for i in range(1,9):
        a='"sg_number":'+ str(i) + ','
        if a in line:
            new.remove(line)

Это создаст новый список со строками, удаляющими «sg_number» 1-8. Теперь запишите список в файл. Я не совсем уверен, но это сработает.

...