Pythonでリストで.replace()を使用する

okwaves2024-01-25  10

Python に txt ファイルを読み取らせ、その中の特定の単語を「XXXX」に置き換えさせようとしています。 すべての単語を含むリストがありますが、問題は return がリストを受け入れないことです。 やってみました

def email2(email):

  proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]

  for words in email:

    if "she" in email:
      replaced = email.replace("she", "XXXX")
      return replaced

    if "personality matrix" in email:
      replaced = email.replace("personality matrix", "XXXX")
      return replaced

    if "sense of self" in email:
      replaced = email.replace("sense of self", "XXXX")
      return replaced

    if "self-preservation" in email:
      replaced = email.replace("self-preservation", "XXXX")
      return replaced

    if "learning algorithm" in email:
      replaced = email.replace("learning algorithm", "XXXX")
      return replaced

    if "her" in email:
      replaced = email.replace("her", "XXXX")
      return replaced

    if "herself" in email:
      replaced = email.replace("herself", "XXXX")
      return replaced
    

print(email2(email_two))

これは機能し、(少しいじくり回して)必要なことを実行しますが、ご覧のとおり、コードが不必要に長すぎます。誰かが私にそれを作る方法を教えてくれることを期待していましたif ステートメントにすべての単語を 1 つずつ入力することなく、リスト内のすべての単語を置き換えることができれば、よりコンパクトになります。



------------------------

ループしないでください電子メール内の文字をループします (電子メールのタイプが str の場合、word は単語ではなく文字です!) — 独自の用語をループします。

コードも途中で返されており、複数の単語を置き換えることはありません。最後に、メールチェックの if … は冗長なので省略します。

def email2(email):
  proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]

  for word in proprietary_terms:
    email = email.replace(word, "XXXX")

  return email

0



------------------------

proprietary_terms リストを反復処理して、リスト内の単語がメール内に存在するかどうかを確認し、存在する場合は置き換えることができます。

proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]

for word in proprietary_terms:
    if word in email:
        email = email.replace(word, "XXXX")
return email



------------------------

def check_email(email):

    proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]

    for word in proprietary_terms:
        if word in email:
            email.replace(word, "XXXX")

    return email



------------------------

re パッケージを使用してこれを行う別の (短い) 方法:

import re
def check_email(email):
    proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]
    return re.sub('|'.join(proprietary_terms),'XXXX',email)

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。