从 Txt 文件中提取特定数据 python

Extract Specific Data from Txt file python

我有一个 txt.fil(服务器日志),只想从中提取某些字段并将其写入 csv:

Date=2021-01-04 23:45:47.131 interaction=basic id=12333 personalid=11117 tisract=jinx fabrics=xyz session_id=adsflkixx endpoint=tool/tac/product/case

像这样基本上有几百万行

如何只从 txt 文件中提取日期、ID 和端点并将其转换为字典,然后再转换为数据框?

名称重复,值不断变化,所以我想将名称保留为 header,将值保留为数据行。

我建议使用更合适的工具,如 ELK Stack 进行日志解析,但如果您想使用 Python...

使用正则表达式

import re
import csv

regex = r"^Date=(\d{4}-\d{2}-\d{2} (?:\d{2}:){2}\d{2}\.\d{3})\W.*\sid=(\d+).*\sendpoint=(.+)$"

with open('log.txt') as f, open('out.csv', 'w') as f_out:
  fields = ["Date", "id", "endpoint"]
  writer = csv.DictWriter(f_out, fieldnames=fields)
  writer.writeheader()
  for line in f:
    matches = re.finditer(regex, line, re.MULTILINE)
    for matchNum, match in enumerate(matches, start=1):
      data = {fields[groupNum]: match.group(groupNum + 1) for groupNum in range(len(match.groups()))}
      writer.writerow(data)

示例输出

$ cat out.csv
Date,id,endpoint
2021-01-04 23:45:47.131,12333,tool/tac/product/case