簡體   English   中英

從 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)

樣品 output

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM