#python #python-3.x #attributeerror
#питон #python-3.x #ошибка атрибута #python
Вопрос:
при определении класса (RegexpReplacer) я обнаружил ошибку атрибута и не получил решения этой проблемы. код приведен ниже, а также ошибка:
import re
replacement_patterns = [
(r'won't', 'will not'),
(r'can't', 'cannot'),
(r'i'm', 'i am'),
(r'ain't', 'is not'),
(r'(w )'ll', 'g<1> will'),
(r'(w )n't', 'g<1> not'),
(r'(w )'ve', 'g<1> have'),
(r'(w )'s', 'g<1> is'),
(r'(w )'re', 'g<1> are'),
(r'(w )'d', 'g<1> would')
]
class RegexpReplacer(object):
def __init__(self, patterns=replacement_patterns):
self.patterns = [(re.compile(regex), repl) for (regex, repl) in patterns]
def replace(self, text):
s = text
for (pattern, repl) in self.patterns:
s = re.sub(pattern, repl, s)
return s
replacer=RegexpReplacer()
print(replacer.replace("can't is a contradicton"))
я нашел ошибку
Traceback (most recent call last):
print(replacer.replace("can't is a contradicton"))
AttributeError: 'RegexpReplacer' object has no attribute 'replace'
пожалуйста, если кто-нибудь может помочь
Ответ №1:
replace
Метод скрыт внутри __init__
, вы должны исправить отступ:
import re
replacement_patterns = [
(r'won't', 'will not'),
(r'can't', 'cannot'),
(r'i'm', 'i am'),
(r'ain't', 'is not'),
(r'(w )'ll', 'g<1> will'),
(r'(w )n't', 'g<1> not'),
(r'(w )'ve', 'g<1> have'),
(r'(w )'s', 'g<1> is'),
(r'(w )'re', 'g<1> are'),
(r'(w )'d', 'g<1> would')
]
class RegexpReplacer(object):
def __init__(self, patterns=replacement_patterns):
self.patterns = [(re.compile(regex), repl) for (regex, repl) in patterns]
def replace(self, text):
s = text
for (pattern, repl) in self.patterns:
s = re.sub(pattern, repl, s)
return s
replacer=RegexpReplacer()
print(replacer.replace("can't is a contradicton"))