Скрипт на Python для удаления всех строк, кроме «хороших слов»

#python

#python

Вопрос:

У меня есть противоположный скрипт, который отлично работает, но мне нужен скрипт, который удалит все строки, кроме строк с «хорошими словами», Это было бы противоположно этому скрипту, который отлично работает для плохих слов. Любая помощь приветствуется.

 bad_words = ['abc:', 'xyz:']  
with open('poop.txt') as badfile, open('Clean.txt', 'w') as cleanfile:
    for line in badfile:
      clean = True
    for word in bad_words:
        if word in line:
            clean = False
    if clean == True:
        cleanfile.write(line)
  

Комментарии:

1. эй, просто поменяйте местами свое чистое логическое значение…

Ответ №1:

Чтобы писать только плохие слова, вам нужно инвертировать условие, которое определяет, пишете вы или нет. Как и в случае изменения True в False

 bad_words = ['abc:', 'xyz:']  
with open('poop.txt') as badfile, open('Clean.txt', 'w') as cleanfile:
    for line in badfile:
      clean = True
      for word in bad_words:
          if word in line:
              clean = False
      if clean == False:
          cleanfile.write(line)
  

Это также можно выразить с помощью not оператора. Чтобы вы могли написать if not clean:

Ответ №2:

Сделайте отступ другого if с помощью оператора for и инвертируйте последний if

 bad_words = ['abc:', 'xyz:']  
with open('poop.txt') as badfile, open('Clean.txt', 'w') as cleanfile:
    for line in badfile:
      clean = True
      for word in bad_words:
          if word in line:
              clean = False
      if not clean == True:
          cleanfile.write(line)