Я хочу удалить только одну искомую строку из моего тестового файла - PullRequest
1 голос
/ 29 сентября 2019

Это мой код и данные файла, приведенные ниже. У меня есть файл с именем теста. В котором я пытаюсь найти число в первом столбце. Если этот номер найден в любой строке, я хочу удалить эту строку.

def deleteline():
n=5
outfile=open('test.txt','r+')
line = outfile.readline()
while line !='':
    lines= line.rstrip('\n')
    listline=lines.split(',')
    num=int(listline[0]) 
    if n==num:       
       print(listline[1])    
       outfile.write(lines)
    else:
       print("no")
    line= outfile.readline()
outfile.close()

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Это должно решить вашу проблему:

def deleteline():

    n = 5
    outfile = open('test.txt', 'r')
    lines = outfile.readlines()
    outfile.close()
    outfile = open('test.txt', 'w')
    for line in lines:
        lineStrip = line.rstrip('\n')
        listLine = lineStrip.split(',')
        num = int(listLine[0])
        if(num == n):
            outfile.write('')
        else:
            outfile.write(line)
    outfile.close()
0 голосов
/ 29 сентября 2019

Как предложил Саймон в комментарии выше, из этого ответа измените условие проверки следующим образом:

with open("test.txt", "r") as f:
    lines = f.readlines()
with open("test.txt", "w") as f:
    for line in lines:
        tempLine=line.strip("\n")
        tempLine=tempLine.split(',')
        if int(tempLine[0]) != 4:
            f.write(line)
...