python--正则表达式过滤数据

import re
import csv
import json

CONFIG_HEADER = ["ChangeSrc", "timestamp", "power", "bright", "ct", "device_id"]
RUN_HEADER = ["ChangeSrc", "timestamp", "ManualAD", "PIR", "BrightAD", "device_id"]
SEND_HEADER = ["bright", "ct", "power", "L1", "bright_alpha", "bright_beta", "ct_alpha", "ct_beta", "changeSrc"]

def read_data(filename):
    config_data = [CONFIG_HEADER]
    run_data = [RUN_HEADER]
    send_msg = [SEND_HEADER]
    for line in open(filename):
        match = re.match("(\[.*\]) (.*) message - (\d*): (\{.*\})", line.strip())
        mode = match.group(2)
        if mode == "recv":
            message = json.loads(match.group(4))
            if message["topic"] == "config":
                config_data.append([message[i] for i in CONFIG_HEADER])
            else:
                run_data.append([message[i] for i in RUN_HEADER])
        else:
            message = json.loads(match.group(4))["outputs"][0]["fields"]
            message = dict([(i["oKey"], i["oValue"]) for i in message])
            send_msg.append([message[i] for i in SEND_HEADER])
    return config_data, run_data, send_msg

def write_data(data, filename):
    with open(filename, "wb") as f:
        writer = csv.writer(f)
        writer.writerows(data)

if __name__ == "__main__":
    filename = "C:/Users/Administrator/Desktop/test002.txt"
    config_data, run_data, send_msg = read_data(filename)
    if len(config_data) > 1:
        write_data(config_data, "C:/Users/Administrator/Desktop/config_data.csv")
    if len(run_data) > 1:
        write_data(run_data, "C:/Users/Administrator/Desktop/run_data.csv")
    if len(send_msg) > 1:
        write_data(send_msg, "C:/Users/Administrator/Desktop/send_msg.csv")

你可能感兴趣的:(python,数据处理)