如何返回变量并在Python类中的其他函数/方法中重用它们

时间:2018-05-31 13:28:44

标签: regex xml class methods return

我正在使用Python Class对象项目。一个方法名称get_text()解析并提取XML文件中的所有文本,并返回文本的值,' text_variable'这样它就可以用在Class的另一个方法中。在Class对象中是一个名为get_text的函数。它读取每个XML文件的行,然后提取所有文本。在这种方法中,我想在变量名称下存储(返回)文本的值' text_variable'从XML文件中检索(所有这些输入文件都存储在我的计算机上的工作目录中),以便我可以在我的程序中的另一种方法中使用它。

在' background_summary(个体)'方法,使用RegEx表达式,根据关键字/短语搜索搜索和提取句子,使用前一种方法返回的变量,' text_variable'作为参数。但是,在if _name_=='_main_'语句下,当我尝试打印返回&text;变量'的值时,它并没有提供我所期望的所有输出。它只从一个XML文件打印一行。但是,当我打印'文本变量'在get_text(self)方法内部,它打印出每个XML文件的所有输出。

所以我想知道在运行程序时为什么我无法重用并成功调用变量的可能性。程序无法在调用时从每个XML文件中检索所有文本,它只从第一个XML文件中检索一行。但是,当我打印输出' text_variable'在get_text()方法中,我可以看到所有文本;但是,由于没有返回该值,我无法在其他' background_summary()'中使用它。方法

以下代码

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())

0 个答案:

没有答案