#python
#python
Вопрос:
Я использую модуль re в python для некоторых операций с регулярными выражениями.Он работает нормально, когда я определил шаблон, который будет сопоставляться статически в программе Python.
Например,
import re
s="hi can you help me out"
pattern=r'[a-z ]*' #pattern that takes space and lower case letters only
i= re.fullmatch(pattern,s) #to check the entire string
print(i.string)
output:
hi can you help me out
Теперь позвольте мне подойти к проблеме, с которой я столкнулся, заключается в том, что если я попытался взять шаблон ввода от пользователя во время выполнения, он выдает исключение.Вот код
import re
s="hi can you help me out"
pattern=input("Enter pattern:")
i= re.fullmatch(pattern,s)
print(i.string)
output:
Enter pattern:r'[a-z]*'
Exception has occurred: AttributeError
'NoneType' object has no attribute 'string'
Надеюсь, кто-нибудь поможет мне разобраться с этой проблемой.
версия python: 3.5
Заранее спасибо
Комментарии:
1. Что вы вводите? отлично работает для
Enter pattern:[a-z ]*
PS. обратите внимание наr'
2. Открытие
r'
и закрытие'
не являются частью шаблона3. поскольку вы ввели
r'[a-z ]*'
в качестве входных данных не[a-z ]*
4. @GomathiMeena Вы случайно не используете Python 2.x?
5. @GomathiMeena покажите нам ошибку
Ответ №1:
Вам нужно ввести только эту часть [a-z ]*
без r
префикса string:
Python 3.x:
import re
s = "hi can you help me out"
pattern = input("Enter pattern:")
i = re.fullmatch(pattern,s)
print(i.string)
Python 2.x:
import re
s = "hi can you help me out"
pattern = raw_input("Enter pattern:") # since input() in python2.x is the same eval(raw_input()) which would return an int
i = re.fullmatch(pattern,s)
print(i.string)
ВЫВОД:
Enter pattern:[a-z ]*
hi can you help me out