2017-02-13 4 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 

Это проверяет первую букву содержимого файла данных, но мне нужно, чтобы проверить каждое слово в предложении, но я не знаю, как работать на первую букву каждого слова в предложение. Пожалуйста помоги!

+0

Вы хотите вернуть True когда? когда все слова всех строк начинаются с гласного? не кажется мне полезным. –

+3

Узнайте, кто разделяет строку в phyton. Разделите строку пробелами. Запустите цикл для каждого слова, чтобы проверить, начинается ли он гласным – Filype

+2

. Разделение содержимого на слова может быть затруднено, если вы хотите игнорировать знаки пунктуации, цифры и другие символы. Наивный способ сделать это будет 'contents.split()'. – martineau

ответ

3

В вашей main функции заменить contents=datafile.read() с contents = datafile.readlines(), а затем соответственно изменить ваш 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() и использовать True и False вместо true и false для питона ,

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