Удаление строки из файла путем указания указанной строки c не работает в python - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь удалить каждую строку, содержащую «annote = {», но мой код не работает.

У меня есть файл, хранящийся в переменной myFile, и я хочу go через каждую строку этого файла и удалите каждую строку, которая содержит строку аннотации.

это в основном мой код:

    print(myFile.read())      //prints myFile
    myFile.seek(0)

    for lines in myFile:
        if b"annote = {" in lines:
            lines = lines.replace(b'.', b'')

    myFile.seek(0)
    print(myFile.read())    //this prints the exact same as the print method above so annote lines 
                            //haven't been removed from this file

Я понятия не имею, почему строки аннотации не удаляются. Вероятно, что-то не так с методом замены, потому что он всегда находится внутри запроса if, но ничего не происходит со строками аннотации. Я также попробовал lines.replace(b'.', b'') вместо lines = lines.replace(b'.', b''), но ничего не произошло.

Надеюсь, кто-нибудь может мне помочь с этой проблемой

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Это должно работать:

with open('input.txt') as fin :
    lines = fin.read().split('\n')  # read the text, split into the lines

with open('output.txt', 'w') as fout :
    # write out only the lines that does not contain the text 'annote = {'
    fout.write( '\n'.join( [i for i in lines if i.find('annote = {') == -1] ))
0 голосов
/ 28 апреля 2020

Это сделает за вас.

f.readlines () возвращает список строк текста

Затем вы проверяете строки, которые не содержат то, что вам не нужно

Затем вы записываете их в отдельный новый файл.


    f2 = open('newtextfile.txt', 'w')

    with open('text_remove_line.txt', 'r') as f:
       for line in f.readlines():
           if 'annote = {' not in line:
               f2.write(line)
    f2.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...