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

Streamlit .markdown方法无法正确渲染Markdown内容的技术求助

问题分析

从你的描述和代码来看,Streamlit无法正确渲染Markdown加粗格式,大概率是这两个核心原因之一:

  1. 你拿到的summary_info['data']原始内容已经丢失了Markdown格式(比如**被转义成了\*\*或**,或是被sanitize工具过滤删除);
  2. 文本中存在特殊字符(比如in‑view里的非标准长连字符)干扰了Streamlit的Markdown解析逻辑。

分步排查与解决方法

1. 先确认原始数据的格式是否正确

先在代码里添加一行打印,检查summary_info['data']的原始内容是否真的包含正确的Markdown语法:

with tab_ai_summary:
    if summary_info['error']:
        tab_ai_summary.error("Could not generate AI summary")
        st.stop()
    # 打印原始数据,检查Markdown标记是否存在
    print("Raw summary content:", summary_info['data'])
    sanitized_summary = summary_info['data']
    tab_ai_summary.markdown(sanitized_summary)

如果打印结果里的**变成了转义字符(比如\*\*),说明数据在生成或传递环节被转义了,需要回溯到生成summary_info['data']的步骤修复格式。

2. 去掉不必要的sanitize步骤

如果你的sanitized_summary只是简单赋值、没有实际的安全过滤需求,直接去掉这个中间变量,用原始数据渲染试试:

with tab_ai_summary:
    if summary_info['error']:
        tab_ai_summary.error("Could not generate AI summary")
        st.stop()
    # 直接使用原始数据渲染Markdown
    tab_ai_summary.markdown(summary_info['data'])

如果之前有使用HTML sanitizer(比如bleach)处理过数据,要确保配置里允许Markdown的特殊字符(*、_等),不然sanitizer会把这些Markdown标记过滤掉。

3. 处理特殊字符

文本里的in‑view用的是en dash(长连字符),虽然不直接影响加粗,但这类特殊字符可能偶尔干扰Markdown解析。可以把它替换成普通连字符试试:

with tab_ai_summary:
    if summary_info['error']:
        tab_ai_summary.error("Could not generate AI summary")
        st.stop()
    # 替换特殊长连字符为普通连字符
    fixed_summary = summary_info['data'].replace('‑', '-')
    tab_ai_summary.markdown(fixed_summary)

4. 测试硬编码的Markdown验证Streamlit功能

为了排除Streamlit本身的问题,你可以先渲染一段硬编码的测试Markdown,确认功能正常:

with tab_ai_summary:
    test_markdown = "**Stellar Bank**发起了一项聚焦**in-view rate**的金融垂直领域营销活动,预算为**$80,000**。"
    tab_ai_summary.markdown(test_markdown)

如果这段能正常显示加粗,说明问题完全出在你的summary_info['data']内容上,需要回溯数据生成的环节,确保Markdown格式没有被破坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 11:13:15