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

如何将Ollama的结构化输出转换为Python DataFrame

如何将Ollama的结构化输出转换为Python DataFrame

嘿,我太懂你这种抓耳挠腮的感觉了——Ollama返回的这个格式根本不是标准JSON,而是类Python对象的写法,难怪普通的JSON解析工具都不管用,甚至你手动替换字符都没效果。别慌,给你分享两个靠谱的解决办法,分分钟把它转成DataFrame:

方法一:正则表达式清理格式,转成标准JSON

这个输出里的Pet(...)本质就是键值对集合,咱们只要把它改成JSON认可的格式就行。核心就是把Pet(换成{,把)换成},再把单引号改成双引号(JSON只认双引号),最后包装成合法的JSON数组。

用Python代码实现的话是这样:

import re
import pandas as pd
import json

# 把你的原始Ollama输出粘在这里
raw_text = """pets=[
  Pet(name='Luna', animal='cat', age=5, color='grey', favorite_toy='yarn'), 
  Pet(name='Loki', animal='cat', age=2, color='black', favorite_toy='tennis balls')
]"""

# 第一步:把列表里的内容提取出来
list_content = re.search(r'\[(.*)\]', raw_text, re.DOTALL).group(1)

# 第二步:批量替换格式,改成JSON语法
cleaned = re.sub(r'Pet\s*\(', '{', list_content)  # 匹配带任意空格的Pet(
cleaned = re.sub(r'\),?', '},', cleaned)  # 把)换成},顺便处理末尾逗号
cleaned = cleaned.replace("'", '"')  # 单引号转双引号适配JSON规范

# 最后补成完整的JSON数组,去掉末尾多余的逗号
final_json = f"[{cleaned.rstrip(',')}]"

# 解析成字典列表再转DataFrame
pets_dict = json.loads(final_json)
df = pd.DataFrame(pets_dict)
print(df)

运行这段代码,你就能得到规整的DataFrame了。

方法二:直接解析Python对象(更省心)

既然这个输出本身就是类Python的结构,咱们不如直接让Python识别它。只要提前定义好Pet这个结构,就能直接把字符串转换成Python列表,再转DataFrame。

代码示例如下:

import pandas as pd
from collections import namedtuple

# 先定义和输出匹配的Pet结构
Pet = namedtuple('Pet', ['name', 'animal', 'age', 'color', 'favorite_toy'])

# 你的原始Ollama输出
raw_text = """pets=[
  Pet(name='Luna', animal='cat', age=5, color='grey', favorite_toy='yarn'), 
  Pet(name='Loki', animal='cat', age=2, color='black', favorite_toy='tennis balls')
]"""

# 把字符串转换成Python变量
local_namespace = {}
exec(raw_text, {'Pet': Pet}, local_namespace)
pets_list = local_namespace['pets']

# 一键转DataFrame
df = pd.DataFrame(pets_list)
print(df)

这个方法不用折腾字符串替换,Python直接就能识别Pet(...)这种写法,只要提前把Pet的结构定义好就行,是不是更省心?

为啥你之前的replace没生效?

你说手动替换括号和Pet没成功,大概率是因为原始文本里有换行、空格这些空白字符!比如Pet(和name之间可能有空格或者换行,普通的str.replace("Pet(", "{")只会匹配完全不带空格的Pet(,自然替换不到。用正则表达式的re.sub就能解决这个问题,它能匹配任意空白字符~

备注:内容来源于stack exchange,提问作者BBJonz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:23:06