Пытаясь понять построчно Python решение для упражнения, которое я не смог решить (на самом деле тоже не смог понять) - PullRequest
0 голосов
/ 04 марта 2020
proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself", "Helena"]

negative_words = ["concerned", "behind", "danger", "dangerous", "alarming", "alarmed", "out of control", "help", "unhappy", "bad", "upset", "awful", "broken", "damage", "damaging", "dismal", "distressed", "distressed", "concerning", "horrible", "horribly", "questionable"]

punctuation = [",", "!", "?", ".", "%", "/", "(", ")"]

def censor_three(input_text, censored_list, negative_words):
  input_text_words = []
  for x in input_text.split(" "):
    x1 = x.split("\n")
    for word in x1:
      input_text_words.append(word)
  for i in range(0,len(input_text_words)):
    if (input_text_words[i] in censored_list) == True:
      word_clean = input_text_words[i]
      censored_word = ""
      for x in range(0,len(word_clean)):
        censored_word = censored_word + "X"
      input_text_words[i] = input_text_words[i].replace(word_clean, censored_word)
    count = 0
    for i in range(0,len(input_text_words)):
      if (input_text_words[i] in negative_words) == True:
        count += 1
        if count > 2:
          word_clean = input_text_words[i]
          for x in punctuation:
            word_clean = word_clean.strip(x)
          censored_word = ""
          for x in range(0,len(word_clean)):
            censored_word = censored_word + "X"
          input_text_words[i] = input_text_words[i].replace(word_clean, censored_word)
  return " ".join(input_text_words)

# print(censor_three(email_three, proprietary_terms, negative_words))

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

Первые 6 строк Я понимаю, что мы разбиваем строку электронной почты на "" и новые строки и добавляем каждое слово в пустой список input_text_words (я думаю, что это создает список, подобный ["Dear", "Board "," of "," Directors, ...])

Следующим для l oop мы проверяем каждое слово в input_text_words и если какое-либо слово в input_text_words [i] равно = слову в censored_list?

Вопрос 1. Правильно ли мое понимание выше?

word_clean = input_text_words [i] <- поэтому здесь word_clean будет содержать отдельные слова в input_text_words </p>

Вопрос 2. Для вышеизложенного я не уверен, зачем мы это делаем

Мы создаем пустую строку censored_word для позиции индекса в word_clean (я думаю, что циклически перебирая буквы каждого word), мы делаем связку X, которая является длиной censored_word. Затем мы заменяем любые совпадения censored_word и word_clean, мы заменяем чистые слова, которые соответствуют X *

count = 0

* 10. 21 * Для слов в input_text_words здесь используются те же логики c, что и выше, о которых я был озадачен "if (input_text_words [i] in positive_words) == True:"

Вопрос 3 : Означает ли это, что мы пропустили l oop через input_text_words и если слово соответствует слову в списке негативных слов - True?

Если true, добавьте 1 к переменной count. Если число больше 2, то мы видим тот же вопрос, который у меня был до

Вопрос 4: word_clean = input_text_words [i] <- я все еще не совсем уверен, почему мы делаем это </strong>

Проходя по списку пунктуации, мы удаляем word_clean любой пунктуации.

Создаем пустую строку censor_word, l oop через каждую букву word_clean и добавляем такое же число X в censor_word, как и число букв в word_clean

Для индексной позиции input_text_words замените word_clean на censored_word

Вопрос 5. Я не совсем понимаю, как правильное слово заменяется на censored_word

Наконец, объедините каждое input_text_words с ""

Буду очень признателен, если кто-нибудь сможет исправить любые недоразумения, которые у меня есть с точки зрения непрофессионала, я не смог решить вопрос и должен был посмотреть в ответ (и был на самом деле супер шокирован тем, как долго была функция, во всех упражнениях, которые я делал до сих пор, я н никогда не видел такой длинной функции раньше). Так как я сосу на Python и не могу ответить на него, один из способов научиться мне - постараться полностью понять ответ, который они дали, построчно, поэтому любая помощь будет действительно очень признательна.

...