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

Python如何将文本文件中字符串格式的字典转换为pandas DataFrame

问题解决方法

原有代码错误原因

  • 每次循环都单独为单行数据生成DataFrame,没有汇总所有行的数据,最终只能保留最后一行的处理结果,且单字典直接传入pd.DataFrame.from_dict会默认按键名做列、值做行,单值场景会触发维度不匹配报错
  • with open 语法会在代码块执行结束后自动关闭文件,不需要额外写f.close,且你写的f.close缺少括号,属于方法引用没有实际执行
  • 直接用eval()执行字符串存在安全风险,如果日志里被植入恶意代码会直接执行,建议用更安全的ast.literal_eval,它只会解析Python基础数据结构,不会执行任意代码
  • 若尝试用json.loads解析会因为字符串使用单引号不符合JSON规范报错,因此不适合用JSON模块处理当前格式的内容

正确实现代码

import pandas as pd
import ast

# 初始化空列表存储所有行的字典
data_list = []

with open("c:/file.log", encoding='utf-8') as f:
    for line in f:
        # 去掉首尾空白字符(包括换行符)
        line = line.strip()
        # 跳过空行避免解析报错
        if not line:
            continue
        # 字符串转字典
        row_dict = ast.literal_eval(line)
        data_list.append(row_dict)

# 直接把字典列表转DataFrame
df = pd.DataFrame(data_list)

print(type(df))
print(df)

补充说明

如果确认日志内容完全可控无风险,也可以将ast.literal_eval(line)替换为eval(line),但该操作存在安全隐患,不推荐在生产环境使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:54:03