2016-07-07 49 views
2

自分自身でPythonを教えようとしています。現在私はUdacityで利用可能な無料のPythonコースを使用しています。私はHTLPTHWも読んでいます。Python:リスト内の単語がドキュメントに存在するかどうか確認してください。

モジュールの1つが少し日付が入り、現在使用できないWebサイトに対してURLLIBモジュールを使用するよう求められます。それがしたことは、ある文書に呪いの単語があったかどうかに基づいて、真/偽の状態だった。それはファイルを参照し、その内容をURL検索に読み込んだ後に入力し、検索後にTrue/Falseのいずれかと解決しました。

私はこれを回避する方法を考えていましたが、ドキュメント内で検索される誓いのリストを使用できると思いました。開いている文書にリスト内の誓いが見つかった場合は、アラートが表示されます。

私はいくつかの問題を抱えていますが、チュートリアルに基づいてコードの元のフォーマットのほとんどを保持していることがあります。つまり、キーワードではなくURLLIBメソッドに合わせて調整することができます。サーチ。

def read_text(): 
    quotes = open("/Users/Ishbar/Desktop/movie_quotes.txt") 
    contents_of_file = quotes.read() 
    print(contents_of_file) 
    quotes.close() 
    check_profanity(contents_of_file) 

def check_profanity(text_to_check): 
    Word_db = ["F***","S***","A**"] 
    quotes = open("/Users/Ishbar/Desktop/movie_quotes.txt") 
    contents_of_file = quotes.read() 
    output == Word_db 
    if str(Word_db) in quotes.read(): 
     output == 1 
    if output == 1: 
     print("Profanity Alert!!") 
    elif output == 0: 
     print("This document has no curse words.") 
    else: 
     print("ERROR: Could not scan the document properly.") 
read_text() 

コードを幸せにすることはできません。私はいつも冒涜が見つかりました、または冒涜が見つかりませんでした。私は出力が何であるかを変更することができると思っていました。そうでなければ、出力がデフォルト以外の状態になることはありません。

そのためには、いつも不在の場合、それ以外の場合は冒涜/不在のためのエリフが必要ですか?

答えて

0

のは、明示的にそれを行うにしてみましょう:

もちろん
def check_profanity(document_to_check): 
    Word_db = ["F***","S***","A**"] 
    with open(document_to_check) as quotes:  # let's open the document 
     for line in quotes:      # parse it line by line 
      for word in Word_db:    # check offensing words one by one 
       if word in line: 
        return True     # if found one bad word, go out :-) 

if check_profanity("/Users/Ishbar/Desktop/movie_quotes.txt"): 
    print "Profanity Alert!!" 
else: 
    print("This document has no curse words.")  

は、経験豊富なPythonの開発者が少ないラインでそれを書き換えることができますが、魔法のようにそれを行う前に、あなたはそれを明示的に行う方法を学習する必要があります: )

0

それがpreseある場合は、すでにread_text()にファイルの内容を読んでいるので、あなたがcheck_profanity()

で再度ファイルを読む必要はありません。また、ラインif str(Word_db) in quotes.read():は、文字列をチェックするリストに変換ファイル内のnt。それは同等です:

if '["F***","S***","A**"]' in quotes.read()

あなたがリストのどの要素がファイルに存在するかどうかを確認する必要があります。ループはforを使用して行うことができます。

def check_profanity(text_to_check): 
     Word_db = ["bad","verybad"] 
     for word in Word_db: 
      if word in text_to_check: 
       print("Profanity Alert!!") 
       break 
     else: 
      print("This document has no curse words.") 

check_profanity("this file contains bad words") # 1st call 
check_profanity("this file contains good words") #2nd call 

出力:

冒涜アラート!

この文書には呪いはありません。

これも正規表現を使用して行うことができます。

import re 
if re.search("("+")|(".join(Word_db)+")", quotes.read()): 
    print("Profanity Alert!!") 
else: 
    print("This document has no curse words.") 
関連する問題