AttributeError: у объекта 'RegexpReplacer' нет атрибута 'replace' - PullRequest
4 голосов
/ 23 апреля 2019

как определение класса (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 Ответ

2 голосов
/ 23 апреля 2019

Метод 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"))
...