从 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
我有一个 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