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 返回前端
相关推荐
AAA阿giao3 小时前
用 LangChain 玩转大模型:从零搭建你的第一个 AI 应用
javascript·人工智能·langchain·llm·ai编程·ai开发
至此流年莫相忘4 小时前
模型调用的主要方法及参数
langchain
红鼻子时代4 小时前
第6篇:实战项目-智能知识库助手(入门版)
langchain·知识库助手
Coder_Boy_4 小时前
基于SpringAI的智能平台基座开发-(十一)
人工智能·spring·langchain·langchain4j
小芳矶5 小时前
【langchain框架——检索链】利用检索链创建自己的购物知识库并完成智能体的商品推荐
java·python·langchain
AAA阿giao5 小时前
赋予大模型“记忆”:深度解析 LangChain 中 LLM 的上下文记忆实现
javascript·langchain·llm
神秘的猪头6 小时前
LangChain Tool 实战:让大模型“长出双手”,通过 Tool 调用连接真实世界
langchain·node.js·aigc
沛沛老爹8 小时前
Advanced-RAG原理:RAG-Fusion 检索增强生成的多查询融合实战
langchain·llm·agent·fusion·rag·advanced·web转型
xhxxx18 小时前
你的 AI 为什么总答非所问?缺的不是智商,是“记忆系统”
前端·langchain·llm