То, что я хочу сделать, это искать различные строки в строке и по-разному действовать на некоторые из них. Это то, что я имею сейчас:

import re

book = raw_input("What book do you want to read from today? ")
keywords = ["Genesis", "genesis", "Gen", "Gen.", "gen", "gen.", "Matthew", "matthew", "Matt", "Matt.", "matt", "matt." ]
if any(keyword in book for keyword in keywords):
    print("You chose the book of: " + book)

Я планирую изменить «печать» в конце на другое действие позже. Таким образом, в основном, если пользователь вводит строку «Genisis», он будет выполнять действие # 1, а если пользователь вводит «Gen.» он также выполнит действие № 1, как и для всех других форм строки «Genisis», но если пользователь вводит строку «Мэтью», я хочу, чтобы оно предприняло действие № 2, и оно должно выполнить действие № 2 со всеми другими вариантами Мэтью.

Я подумал что-то вроде этого:

book = raw_input("What book do you want to read from today? "
if book == "Genesis":
    print "Genesis"

Но это потребовало бы много строк для всех перечисленных мной вариантов «генезиса»

Я надеюсь, что кто-то может помочь!

3
Jakewade09 12 Янв 2017 в 08:22

3 ответа

Лучший ответ
book = raw_input("What book do you want to read from today? ").lower().strip('.')
# keywords = ["Genesis", "genesis", "Gen", "Gen.", "gen", "gen.", "Matthew", "matthew", "Matt", "Matt.", "matt", "matt." ]
if book == 'genesis':
    #action1
    pass
elif book == 'gen':
    #action2
    pass
else:
    print('not find the book!')
3
宏杰李 12 Янв 2017 в 05:27

Вы можете использовать цикл for и проверить содержание книги в любом из уникальных наборов ключевых слов. Какие бы изменения ни вводил ввод книги, str.lower гарантирует, что вы сможете найти его в ключевом слове и предпринять действия на основе этого ключевого слова:

actions = {...} # dictionary of functions
keywords = ['genesis', 'matthew', ...]

book = raw_input("What book do you want to read from today? ")

for kw in keywords:
    if book.lower() in kw:
         actions[kw]() # take action!
         break         # stop iteration
0
Moses Koledoye 12 Янв 2017 в 05:37

Использование слайсов все равно потребует от вас написать оператор if, но это уменьшит объем необходимого кода:

if book in keywords[:6]:
    print "Genesis"
1
Pike D. 12 Янв 2017 в 05:27