如何使用Python将JSON格式的.log文件转换为.csv文件?
解决JSON格式日志转CSV/Excel的问题
你的日志文件每行是独立的JSON对象,不是传统CSV格式,所以用read_csv按空格分隔的方式完全不适用,这就是转换失败的原因。下面提供两种可行的解决方法:
方法一:用Pandas直接读取JSON日志
Pandas的read_json支持读取每行一个JSON的格式,只需设置lines=True参数,操作最简便:
import pandas as pd # 读取每行为JSON的日志文件 df = pd.read_json('C:/Users/admin/alert-log/alerthandlerlog/CN-prod-alert-handler-error.log', lines=True) # 保存为CSV文件 df.to_csv('error_log.csv', index=False) # 如果需要保存为Excel,先安装openpyxl库(执行`pip install openpyxl`),再执行: # df.to_excel('error_log.xlsx', index=False)
方法二:逐行解析JSON(容错性更强)
如果日志中存在格式不规范的行,逐行解析可以跳过错误行,避免整个转换失败:
import json import pandas as pd data_list = [] # 打开日志文件逐行读取解析 with open('C:/Users/admin/alert-log/alerthandlerlog/CN-prod-alert-handler-error.log', 'r', encoding='utf-8') as log_file: for line_num, line in enumerate(log_file, 1): stripped_line = line.strip() if not stripped_line: continue try: # 解析当前行的JSON数据 log_entry = json.loads(stripped_line) data_list.append(log_entry) except json.JSONDecodeError as e: print(f"第{line_num}行解析失败: {e},跳过该行") # 将解析后的数据转为DataFrame df = pd.DataFrame(data_list) # 保存为CSV df.to_csv('error_log.csv', index=False)
内容的提问来源于stack exchange,提问作者sri vidya
相关产品推荐
相关产品推荐

