LLM 生成 → 输出 Markdown 文本

1.用 Python Pandas 转换(最常用)

复制代码
import pandas as pd
import io

markdown_table = """| 序号 | 评审因素 | 评审标准 | 分值 |
| :--- | :--- | :--- | :--- |
| 1 | 价格分 | 采用低价优先法计算... | 30 |
| 2 | 技术方案 | 方案需包含详细实施计划,优得10分... | 40 |
| 3 | 商务条款 | 满足招标文件要求的得满分... | 30 |"""

# 转换为 DataFrame
df = pd.read_csv(io.StringIO(markdown_table), sep='|', skiprows=[1]).dropna(axis=1, how='all')

# 清理列名空格
df.columns = df.columns.str.strip()

print(df)

输出效果:

复制代码
   序号  评审因素                  评审标准  分值
0    1   价格分    采用低价优先法计算...  30
1    2  技术方案  方案需包含详细实施计划...  40
2    3  商务条款  满足招标文件要求的得满分  30

2.转换为 Excel 文件

复制代码
# 接上面的 df
df.to_excel('评分标准.xlsx', index=False, sheet_name='评分表')
print("Excel 文件已生成:评分标准.xlsx")

3.转换为 HTML(用于网页展示)

复制代码
html_table = df.to_html(index=False, classes='table table-striped')
print(html_table)

生成的 HTML 可直接用于 Web 页面渲染。

4.转换为可视化表格(用 tabulate 库)

复制代码
from tabulate import tabulate

# 从 DataFrame 转换
print(tabulate(df, headers='keys', tablefmt='grid', showindex=False))

输出效果:

复制代码
+--------+------------+--------------------------------+--------+
| 序号   | 评审因素   | 评审标准                      | 分值   |
+--------+------------+--------------------------------+--------+
| 1      | 价格分     | 采用低价优先法计算...          | 30     |
| 2      | 技术方案   | 方案需包含详细实施计划...      | 40     |
| 3      | 商务条款   | 满足招标文件要求的得满分      | 30     |
+--------+------------+--------------------------------+--------+

5.直接在 Markdown 编辑器中渲染

你提供的文本本身就是 Markdown 格式,在以下工具中会自动渲染成表格:

  • Typora(实时预览)
  • Notion
  • Obsidian
  • GitHub README
  • ChatGPT / Claude 对话界面

只需要确保格式正确(列对齐行 |---| 存在),就会自动显示为表格。

6.一键转换工具

如果不想写代码,可以使用在线工具:

只需粘贴你的 Markdown 文本,即可下载为 Excel/CSV/HTML 格式。

推荐流程:

  1. LLM 生成 → 输出 Markdown 文本
  2. Pandas 解析 → 转为 DataFrame(便于计算总分=100校验)
  3. 后端处理 → 转为 HTML/JSON 返回前端
  4. 前端展示 → 用表格组件渲染(支持编辑)

这样既利用了 LLM 的生成能力,又保证了数据的结构化和可操作性。

7.将包含 Markdown 表格的字符串解析为 Pandas DataFrame 并显示

复制代码
import pandas as pd
import io
import re

# 模拟 LLM 输出(可能包含前后文字)
llm_output = """
根据您的需求,生成的评分标准如下:

| 序号 | 评审因素 | 评审标准 | 分值 |
| :--- | :--- | :--- | :--- |
| 1 | 价格分 | 满足招标文件要求且价格最低的为基准价... | 30 |
| 2 | 技术分 | 方案详实得满分 | 70 |

请知悉。
"""

# 1. 使用正则提取表格部分
# 匹配以 | 开头的行,且包含多行(包括表头和分隔线)
table_pattern = r'((?:\|.*?\|\n?)+)'
match = re.findall(table_pattern, llm_output)

if match:
    # 取第一个匹配到的表格
    table_str = match[0]
    
    # 2. 使用 Pandas 读取
    # sep='|' 表示按竖线分隔
    # skiprows=[1] 跳过分隔线那一行 (| :--- | :--- |...)
    # .dropna(axis=1, how='all') 去掉首尾因分割产生的空列
    df = pd.read_csv(io.StringIO(table_str), sep='|', skiprows=[1]).dropna(axis=1, how='all')
    
    # 3. 清理列名(去除前后空格)
    df.columns = df.columns.str.strip()
    
    # 4. 显示结果
    print("解析成功的表格:")
    print(df)
    print("\n数据类型:")
    print(df.dtypes)
else:
    print("未在文本中找到 Markdown 表格")

运行结果

复制代码
解析成功的表格:
   序号  评审因素                           评审标准  分值
0    1   价格分  满足招标文件要求且价格最低的为基准价...  30
1    2   技术分                     方案详实得满分  70

数据类型:
序号      int64
评审因素   object
评审标准   object
分值      int64
dtype: object

进阶处理:确保数据类型正确

如果分值列中有非数字字符(如"30分"),可以使用以下代码清洗:

复制代码
# 假设分值列里有"30分"这样的数据
# 使用 .str.extract 提取数字部分
df['分值'] = df['分值'].astype(str).str.extract(r'(\d+)').astype(float)

print("\n清洗后的表格:")
print(df)

代码解析

  1. re.findall: 从杂乱的文本中精准提取表格部分,避免前后文字干扰。
  2. pd.read_csv(..., sep='|') : Pandas 天然支持以 | 为分隔符读取表格。
  3. skiprows=[1] : 跳过 Markdown 的分隔行 (| :--- |),这是关键步骤。
  4. .dropna(axis=1, how='all') : 去除首尾可能产生的空列(因为开头和结尾的 | 会导致分割出空值)。
  5. .str.strip(): 清理列名中的空格,确保后续引用列名时不出错。

这样你就得到了一个结构化的 Pandas DataFrame,可以进行后续的:

  • 存入数据库
  • 转为 Excel
  • 数据校验(如总分=100)
  • 转为 JSON 返回前端
相关推荐
Restart-AHTCM7 小时前
LangChain学习之环境搭建与基础概念(1/8)
学习·langchain
米小虾8 小时前
从 ReAct 到 Multi-Agent:AI Agent 架构设计的演进与实践
langchain·jetbrains
小趴菜不能喝9 小时前
LangChain 开发Agent基础
langchain
云姜.10 小时前
如何快速使用Langchain上手编程
python·langchain
情绪总是阴雨天~10 小时前
深度解析:LangChain、Agent、RAG、FC、ReAct、LangGraph、A2A、MCP — 区别、联系与全景图
python·langchain·agent·rag·langgraph·mcp·a2a
赢乐10 小时前
AI大模型学习笔记:LangChain核心组件-工具(Tools)
langchain·大模型·agent·function_call·工具(tools)·tool装饰器·定义工具
秦歌66611 小时前
LangChain-9-中间件middleware
langchain
哥本哈士奇11 小时前
LangChain DeepAgents 学习笔记
笔记·学习·langchain
JavaEdge.11 小时前
06-LangChain Tool 加载与使用指南:预制工具、SerpAPI、edge-tts、GraphQL
chrome·langchain·graphql
Restart-AHTCM12 小时前
LangChain学习之环境搭建与基础概念 - 练习(1/8)
学习·langchain