如何在python中使用类在文本文件中进行模式搜索

如何在python中使用类在文本文件中进行模式搜索,python,Python,我正在尝试使用类搜索模式 我有一个示例文本文件。我必须在文本文件的每一行中查找搜索字符串(“调试日志”)。 然后我必须使用模式打印搜索行的日期,(\d\d\d\d-\d\d-\d\d) 不用上课,我就能做到,取得完美的成绩 但是如何使它与类和对象一起工作 import re class text_processing: def __init__(self,file_name): print ("File opened") self.file_name

我正在尝试使用类搜索模式

我有一个示例文本文件。我必须在文本文件的每一行中查找搜索字符串(“调试日志”)。 然后我必须使用模式打印搜索行的日期,
(\d\d\d\d-\d\d-\d\d)

不用上课,我就能做到,取得完美的成绩

但是如何使它与类和对象一起工作

import re

class text_processing:

    def __init__(self,file_name):
        print ("File opened")
        self.file_name = file_name
        self.search_pat = 'DEBUG Facebook'


    def search(self):
        print ("in sreach function")
        for line in self.file_name:
            print (line)
            if self.search_pat in line:
                print (self.line)
                for i in self.search_pat:
                    print re.findall(r"\d\d\d\d-\d\d-\d\d", self.search_pat)
                    break

def main():
    filename = 'sample1.txt'
    file_open = open(filename, "r")
    x = text_processing(file_open)
    x.search()

我不确定这是否是您希望它确切执行的操作,但我已经解决了文件打开等问题(现在对象被传递了文件名,并且只有在调用search()函数时才打开文件),以及其他一些问题

import re

class text_processing:

    def __init__(self,file_name):
        self.file_name = file_name
        self.search_pat = 'DEBUG Facebook'


    def search(self):
        print ("File opened")
        print ("in search function")
        with open(self.file_name, "r") as file:
            for line in file:
                print (line)
                if self.search_pat in line:
                    print (re.findall(r"\d\d\d\d-\d\d-\d\d", line))


def main():
    filename = 'sample1.txt'
    x = text_processing(filename)
    x.search()

main()
在你搜索self.search\u pat中的模式之前,它只是一个文本“DEBUG Facebook”,所以没有找到任何东西。你还在“DEBUG Facebook”中循环搜索每个字符,因此当
re.findall
已经循环搜索并找到所有出现的字符时,你重复搜索了14次


我希望我正确地理解了您想要实现的目标,并帮助您:)

!!!停止使用open(filename)-这段代码是使用后忘记关闭文件的典型示例!!!!有一个结构的打开(文件名)为。。。这为您关闭了资源!也更喜欢在需要时打开文件(获取资源)。我刚刚测试了你的代码,只要你调用main(),它就可以为我工作,即使它可以工作-它可以改进,而且内存泄漏的错误应该得到修复-通常如果你真的想使用它的话it@DeltaMarine101是的,它没有显示任何错误,但它不会进入搜索方法的for循环。@Drako您能举个例子来改进它吗?你可以更改我的代码,也可以发布。。。