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

Streamlit中HTML渲染异常:仅首行正常其余显示为代码块

排查方向整理
  • 检查HTML渲染调用方式
    确保每条参考文献单独调用st.markdown()并开启unsafe_allow_html=True。如果是将所有内容拼接成一个大字符串一次性渲染,可能因换行、格式冲突导致解析异常。示例:

    # 推荐写法
    for ref in references:
        st.markdown(f"<p>{ref}</p>", unsafe_allow_html=True)
    # 避免写法
    all_refs = "\n".join([f"<p>{ref}</p>" for ref in references])
    st.markdown(all_refs, unsafe_allow_html=True)
    
  • 核对HTML标签完整性
    遍历输出所有生成的HTML内容到控制台(print(生成的HTML)),检查每条参考文献的标签是否完全闭合(比如</p>、</div>),缺失闭合标签会导致后续内容被错误解析为代码块。

  • 排查自定义CSS干扰
    临时注释掉所有自定义CSS代码,验证是否恢复正常渲染。如果恢复,逐步排查CSS规则,重点检查是否误将普通文本元素匹配到代码块样式(如.stCodeBlock相关规则)。

  • 转义文本中的特殊字符
    数据源中的Markdown特殊字符(反引号、星号*、大于号>等)会被Streamlit解析为Markdown格式,导致内容被识别为代码块。使用html.escape()`转义文本内容:

    import html
    for ref in references:
        escaped_ref = html.escape(ref)
        st.markdown(f"<p>{escaped_ref}</p>", unsafe_allow_html=True)
    
  • 验证Streamlit版本兼容性
    升级到Streamlit最新稳定版,或回退到之前已知正常的版本,排查是否因版本迭代导致的HTML解析规则变化。

  • 测试容器组件的渲染上下文
    如果参考文献放在st.expander()、st.tabs等容器内,尝试将代码移到页面根层级测试,部分容器内的HTML渲染逻辑可能存在差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:45:56