2016-12-08 2 views
0

Ниже у меня есть код для системы, которая ищет ключевые слова в предложениях, я использую расширение .split() для этой задачи. Он отлично работает, но когда я вводю одно и то же ключевое слово, например, «Привет». полная остановка в моем входе не соответствует кодам, поэтому возвращает ошибку. Мой вопрос в том, что есть способ разрешить грамматические входы, такие как .Upper() и .Lower() позволяют прописные буквы и т. Д.?Любой способ игнорировать грамматические входы?

input1 = input("Input 'Hello'") 
response = input1.split() 

if "Hello" in response: 
    print("Howdy!") 

Вывод ошибок:

"Hello." is not defined. 
+0

Вы можете '.strip()' не писать буквы или использовать регулярные выражения. – Jasper

+0

Спасибо, куда бы он пошел в моем коде? –

+1

Это неправильное место для объяснения регулярных выражений для '.strip()': 'input1.strip ('.!?')' Будет удалять полные стопы, восклицательные знаки и вопросительные знаки в начале и в конце 'input1 '. – Jasper

ответ

3

Вам не нужно использовать split особенно - оператор in будет проверять, если одна строка подстроку другой. Вы можете использовать следующее:

input1 = input("Input 'Hello'").lower() 

if "hello" in input1: 
    print("Howdy!") 

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

+1

Единственная проблема заключается в том, что если кто-то вводит больше, чем просто «привет», он будет возвращаться и ошибка, например, если кто-то ввел: «Привет, система», –

+0

Какая версия Python вы с помощью? Если это 2.7, вы должны использовать 'raw_input' вместо' input'. – asongtoruin

+0

Да, я использую 3.5 –

0

Если вы хотите сделать это с помощью регулярных выражений, вы можете сделать что-то вроде:

import re 
input1 = input("Input 'Hello'").lower() # from asongtoruin's answer 
input1 = re.sub(r'[^\w]', '', input1) # replace everything not a word character with empty string 

if input1 == "hello": 
    print("Howdy!") 

Какие первые отфильтровывает все не слова, а затем сравнивает.

Но, как упоминалось Джаспер, было бы проще использовать .strip(), если вы знаете, что пользователь будет вводить (хотя это не будет охватывать периоды и т.д. в середине слова)

input1 = input("Input 'Hello'").lower() # from asongtoruin's answer 
input1 = input1.strip('.!?') # or try: strip(string.punctuation) 

if input1 == "hello": 
    print("Howdy!") 

Посмотреть Best way to strip punctuation from a string in Python для получения дополнительной информации ..

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