2017-02-13 3 views
-3

テキストファイルを読んで、.txtファイルの文中のすべての単語が母音かどうかを調べる必要があります。私はこれまでのところ、これを持っている:文中のすべての単語の最初の文字を取得していますか?

def main(): 
#Open, read and close the datafile 
datafile=open(input('Enter File Name: ')) 
contents=datafile.read() 
datafile.close 

def startsWithVowel(): 
    if contents[0] in ['A','a','E','e','I','i','O','o','U','u']: 
     return true 
    else: 
     return false 

これは、データファイルの内容の最初の文字をチェックしますが、私は文の中ですべての単語をチェックする必要がありますが、私は各単語の最初の文字で作業するかどうかはわかりません文。助けてください!あなたのmain機能で

+0

あなたは本当に戻ってほしいですか?すべての行のすべての単語が母音で始まるとき?それは私には役に立たないようです。 –

+3

phytonで文字列を分割する人を見つけます。文字列をスペースで分割します。各単語のループを実行して母音で始まるかどうか確認する – Filype

+2

句読点、数字などの文字を無視する場合は、内容を単語に分割するのが難しい場合があります。それを行う素朴な方法は 'contents.split()'でしょう。 – martineau

答えて

3

contents = datafile.readlines()contents=datafile.read()を交換して、それに対応して、あなたのstartsWithVowelを変更:

def startsWithVowel(): for i in contents: if i[0] in ['A','a','E','e','I','i','O','o','U','u']: return True return False

またdatafile.close()としてあなたのファイルを閉じて、Python用の代わりtruefalseTrueFalseを使用。

4
VOWELS = set(['a', 'e', 'i', 'o', 'u']) 


def starts_with_vowel(word): 
    # make code more clean and efficient 
    return word[0].lower() in VOWELS 


# open the file using context manager - no need to do implicit open/close 
with open(input('Enter File Name: ')) as f: 
    for line in f: # for every line in the file f 
     for word in line.split(" "): # split the line into word 
      print(starts_with_vowel(word)) 
+2

コードのみの回答はめったに役に立ちません。あなたは良い答えを書く機会がありますが、それを浪費しないでください。 –

+0

ありがとうございました。だから、このコードでは、私はreadlinesを使うのか、それともちょうど読むのですか? –

+0

このコードは、ファイルfのすべての行について、f - >の行と同様に動作します。これも開いてファイルを閉じます。 – etlsh

関連する問題