Как вернуть переменные и использовать их в других функциях / методах внутри класса Python - PullRequest
0 голосов
/ 31 мая 2018

Я работаю с объектным проектом класса Python.Одно имя метода get_text () анализирует и извлекает весь текст из файла XML и возвращает значение текста «text_variable», чтобы его можно было использовать в другом методе с классом.Внутри объекта Class есть функция с именем get_text.Он читает строку каждого файла XML, а затем извлекает весь текст.В этом методе я хотел сохранить (вернуть) значение текста под именем переменной 'text_variable', полученной из файлов XML (все эти входные файлы хранятся на моем компьютере в рабочем каталоге), чтобы я мог использовать его в другомметод в моей программе.

Метод 'background_summary (self)', использует выражение RegEx, ищет и извлекает предложения на основе поиска по ключевому слову / фразе с возвращенной переменной из предыдущего метода, 'text_variable' в качествепараметр.Тем не менее, в операторе if _name_=='_main_', когда я пытался напечатать значения возвращаемого text_variable, он не дает мне весь ожидаемый результат.Он печатает только одну строку из одного файла XML.Однако, когда я печатаю «текстовую переменную» внутри метода get_text(self), он выводит все выходные данные из каждого XML-файла.

Поэтому я хочу знать, какова вероятность того, почему яя не могу повторно использовать и вызвать мою переменную успешно, когда я запускаю свою программу.Программа не может извлечь весь текст из каждого XML-файла при вызове и получает только одну строку из первого XML-файла.Однако, когда я печатаю вывод text_variable в методе get_text (), я вижу весь текст;однако, поскольку значение не возвращается, я не могу использовать его внутри другого метода background_summary ().

CODE НИЖЕ

files = os.listdir(os.getcwd())

    class SummaryGenerator(object):

        def __init__(self,files):
            self.files=files

        def get_text(self):
            for f in files:
                with open(f,"r") as fh:
                    for line in fh:
                        soup=BS(line, "lxml")
                        tags=soup.find_all('p')
                        for t in tags:
                            info=''.join(t.text)
                            buf=io.StringIO(info)
                            if 'NOTICE TO APPELLANT' in buf.readlines():
                                break
                            else:   
                                words=info
                                text_variable="".join(words)       
                                self.text_variable=text_variable
                                return self.text_variable

        def background_summary(self):
            bg_list=[]

            background_corpora  = map(lambda x: x[0], re.findall('([^.]*?(respondent|filed a petition)[^)]*\))',self.text_variable, re.I))
            for b in background_corpora:
                bg_list.append(b)
            bkg_string = "".join(str(x)for x in bg_list)

            print('Background', bkg_string)

if __name__ == "__main__":
    for f in files:
        Summary = SummaryGenerator(f)
        print(Summary.get_text())
...