Закрытие вложенного текстового файла, а также вырезание строк из вложенного текстового файла - PullRequest
0 голосов
/ 09 ноября 2019
for h3 in soup.find_all('a'):

    print((str(h3.text)),file=open("demo.txt", "a"))

Выше моя строка кода для очистки веб-сайта. Я использую красивый суп и селен, чтобы очистить сайт. В первой строке написано, что все теги "a" супа найти все. Затем напечатайте текст этих тегов и напечатайте его в файле demo.txt.

По какой-то причине я должен поставить «а», добавить, чтобы весь текст был распечатан. С "w" он печатает только одну строку. Я ищу способ закрыть файл demo.txt, чтобы он постоянно добавлялся в один и тот же файл.

Было бы также полезно узнать, как вырезать определенные строки из текстового файла. Т.е. текстовый файл, вероятно, будет состоять из 750-1000 строк, поэтому команда обрезки (2-5, 94-100) будет очень полезна.

Заранее спасибо

1 Ответ

0 голосов
/ 09 ноября 2019

Напечатает одну строку, потому что каждый раз, когда он находит то, что вы говорите для поиска, открывает этот файл и записывает его. Компьютер не знает слова «удалить», когда мы говорим о словах в файлах =]] Так что для него не важно, что находится в этом файле (и если этот файл не будет существовать, создаст его) с самого начала и запишет егоочередной раз. по этой причине a работает для вас.

try:
    with open(file="demo.txt", mode="w", encoding="utf-8") as file:

        for h3 in soup.find_all('a'):
            file.write(str(h3.text))
finally:
    file.close()

И для этого удаляю строки, я думаю, вы не хотите, чтобы какая-то информация была на них, поэтому проверьте, что вам не нужно, и сделайте другуюоператор if внутри.

...
        for h3 in soup.find_all('a'):
            if stringA in h3.text or stringB in h3.text:
                pass
            else:
                file.write(str(h3.text))
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...