实例化文本分析类

时间:2017-10-15 17:46:34

标签: python python-3.x oop

我找到了这个代码,一个Python类,它接受WhatsApp会话文本文件进程并生成一个我可以与之交互的Chat类。像生成图表,响应矩阵等等:

import re
import time
import pandas as pd
import dateutil
import matplotlib.pyplot as plt

class WppAnalyser:
    def open_file(self):
        x = open(self.filename,'r')
        y = x.read()
        content = y.splitlines()
        return content

    def ismessage(self,str):
        patterns = {

        "hor1":r'w{3}s{1}[0-9]{1,2},s{1}d{4},s{1}d{2}:d{2}', 
        "hor2":r'w{3}s{1}[0-9]{1,2},s{1}d{2}:d{2}', 
        "imp2":r'd{1,2}sw{3}sd{2}:d{2}', 
        "imp1":r'd{1,2}sw{3}sd{4}sd{2}:d{2}'

         }
        for key in patterns:
            result = re.search(patterns[key], str)
            if result and str.count(':') >=2:
                name_start = str.find("-")+2
                first_colon = str.find(":")
                name_end = str.find(":", first_colon+1)
                name=str[name_start:name_end]
                message=str[name_end+1:]
                return [name, message, result.group()]
                return ["","",str]

    def process(self,content):
        j = 1
        df = pd.DataFrame(index = range(1, len(content)+1), columns=[ 'Name', 'Message', 'date_string'])
        for i in content:
            results = self.ismessage(i)
            if results[0] != "":
                df.ix[j]=results
            else:
                df.ix[j]['Name']=df.ix[j-1]['Name']
                df.ix[j]['date_string']=df.ix[j-1]['date_string']
                df.ix[j]['Message']=results[2]
            j = j+1
            df['Time'] = df['date_string'].map(lambda x: dateutil.parser.parse(x))
            df['Day'] = df['date_string'].map(lambda x: dateutil.parser.parse(x).strftime("%a"))
            df['Date'] = df['date_string'].map(lambda x:dateutil.parser.parse(x).strftime("%x"))
            df['Hour'] = df['date_string'].map(lambda x:dateutil.parser.parse(x).strftime("%H"))

我如何一起运行这些功能,在每个功能中传递self会让我感到困惑。主要功能在这里会是什么样的?

我必须实例化WppAnalyser类,对吧?到目前为止,我尝试了第一种方法:

class Chat:
    def __init__(self, x, y):
        self.x = open("chatPPL.txt", "r")
        self.y = y

0 个答案:

没有答案