Имея текстовый файл «words.txt», используйте понимание списка, чтобы прочитать все слова в файле и найти все слова, которые содержат по крайней мере 2 гласных.
Итак, у меня есть текстовый файл:
The quick brown fox jumps over the lazy dog
И лучшая попытка получить все слова и все слова с двумя или более гласными:
#This could be hardcoded in, but for the sake of simplicity (as simple as simplicity gets)
vowels = ["a","e","i","o","u"]
filename = "words.txt"
words = [word for word in open(filename, "r").read().split()]
multivowels = [each for each in open(filename, "r").read().split() if sum(letter in vowels for letter in each) >= 2]
Вывод должен имитировать:
All words in the file: ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
The words in the file that contain 2 or more vowels: ['quick', 'over']
Моя попытка поместить это в одну строку состояла в том, чтобы просто напечатать часть понимания списка «слов» и «многогласных», а также «Все слова в файле»; «... и т. д.
Есть ли кто-нибудь, кто решил бы объединить эти два понимания списков в одно? Мой товарищ по команде и я в тупике, но хотели бы показать это нашему профессору!
Опять же, мой окончательный однострочный код:
print "All words in the file: " + str([word for word in open(filename, "r").read().split()]) + "\nAll words with more than 2 vowels: " + str([each for each in open(filename, "r").read().split() if sum(letter in vowels for letter in each) >= 2])
РЕДАКТИРОВАТЬ: Моя попытка получить все слова в файле, а также все слова с двумя или более гласными.
vowels = ["a", "e", "i", "o", "u"]
filename = "words.txt"
print [(word, each) for word in open(filename, "r").read().split() if sum([1 for each in word if each in vowels]) >= 2]
.seek(0)
- person karthikr   schedule 30.06.2014with open(filename, "r") as fh:
и используйтеfh.read()
перед запуском второго понимания, сделайтеfh.seek(0)
и повторите - person karthikr   schedule 30.06.2014