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 返回前端
相关推荐
JaydenAI5 小时前
[拆解LangChain执行引擎] ManagedValue——一种特殊的只读虚拟通道
python·langchain
OPEN-Source6 小时前
大模型实战:搭建一张“看得懂”的大模型应用可观测看板
人工智能·python·langchain·rag·deepseek
一切尽在,你来7 小时前
1.4 LangChain 1.2.7 核心架构概览
人工智能·langchain·ai编程
一切尽在,你来7 小时前
1.3 环境搭建
人工智能·ai·langchain·ai编程
蛇皮划水怪14 小时前
深入浅出LangChain4J
java·langchain·llm
、BeYourself16 小时前
LangChain4j 流式响应
langchain
、BeYourself16 小时前
LangChain4j之Chat and Language
langchain
qfljg18 小时前
langchain usage
langchain
kjkdd21 小时前
6.1 核心组件(Agent)
python·ai·语言模型·langchain·ai编程
渣渣苏1 天前
Langchain实战快速入门
人工智能·python·langchain