You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Pandas解析嵌套[key=value]格式的传感器日志数据

解析嵌套[key=value]格式传感器日志的Python实现

针对你的无分隔符嵌套格式日志(如[Priority=0][X=776517049]),可以通过正则提取+字典转换的方式替换原代码逻辑,实现按列解析。以下是修改后的完整代码:

import pandas as pd
import re

def parse_log_line(line):
    # 提取所有[]包裹的key=value内容
    key_value_pairs = re.findall(r'\[(.*?)\]', line.strip())
    # 转换为字典
    record = {}
    for pair in key_value_pairs:
        k, v = pair.split('=', 1)  # 用split('=',1)避免value里包含=符号的情况
        record[k] = v
    return record

# 读取日志文件
records = []
with open('/path/to/your_log.txt', 'r') as infile:
    for line in infile:
        line = line.strip()
        if not line:
            continue  # 跳过空行
        records.append(parse_log_line(line))

# 转换为DataFrame,自动补全缺失字段为NaN
df = pd.DataFrame(records)

# 若需要像原代码一样用前两个字段拼接作为行索引(比如Time和Priority),取消下面两行注释:
# df['row_name'] = df.iloc[:, 0] + ' ' + df.iloc[:, 1]
# df.set_index('row_name', inplace=True)

# 输出并保存结果
print(df)
df.to_csv('/path/to/output.csv', index=False)

关键改动说明

  • 正则提取:用re.findall(r'\[(.*?)\]', line)精准提取每个[]内的key=value内容,替代原代码的逗号分割逻辑。
  • 稳健分割:用split('=', 1)分割键值对,避免值本身包含=符号导致的解析错误。
  • 自动补全缺失字段:利用Pandas的DataFrame.from_records自动为每行缺失的字段填充NaN,无需手动计算最大长度补值,简化代码逻辑。

适配日志结构调整

如果你的日志每行第一个字段是时间(比如[Time=2024-05-20 12:00:00]),可以直接将其设为行索引:

df.set_index('Time', inplace=True)

内容的提问来源于stack exchange,提问作者aparna podili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:20:52