2013-08-30 5 views
3

У меня уже есть этот код:Как проверить, заканчивается ли слово с определенной строкой, из файла?

f = open("unknown.txt", 'r') 
a = sum(line.count('ly').endswith() for line in f) 

words = 0 

with open("unknown.txt", 'r') as f: 
    words = len(f.read().split()) 

try: 
    percentage = a/words*100 
    print('{}% adverbs'.format(percentage)) 
except: 
    print('File is empty!') 

Но все это делает, это проверить, если есть «LY» одним словом, как мне сделать так рассчитывать только как «Ly» если .endswith (» ly ') (я предполагаю, что эти команды будут использоваться, но я не знаю, как это сделать. Может кто-то попросит мой код сделать это? Спасибо заранее!

ответ

3

Вы должны разделить свои строки на слова и проверить каждое слово:

a = sum(word.endswith('ly') for line in f for word in line.split()) 

Это (ab) us эс тот факт, что Python булево подкласс int и True == 1 и False == 0.

Вы можете сделать его более явным с фильтром:

a = sum(1 for line in f for word in line.split() if word.endswith('ly')) 

Вы можете захотеть объединить обе однако подсчитывается только в одном цикле:

with open("unknown.txt", 'r') as f: 
    total = lycount = 0 
    for line in f: 
     words = line.split() 
     total += len(words) 
     lycount += sum(1 for word in words if word.endswith('ly')) 

try: 
    percentage = (lycount/total) * 100 
    print('{}% adverbs'.format(percentage)) 
except ZeroDivisionError: 
    print('File is empty!') 

Обратите внимание, что вы никогда не должны использовать защитное одеяло, кроме инструкции; просто поймайте конкретное исключение.

+0

Большое вам спасибо! Ты спасатель жизни! : D, я 'проверю' ваш вопрос через 10 минут, когда я смогу: P, спасибо! – samir

Смежные вопросы