Streamlit .markdown方法无法正确渲染Markdown内容求助
解决Streamlit Markdown渲染异常问题
可能原因及对应解决方案
1. 验证内容是否被转义
首先确认sanitized_summary中的Markdown语法(如**)是否被错误转义(变成\*\*)。添加调试代码查看原始内容:
with tab_ai_summary: if summary_info['error']: tab_ai_summary.error("Could not generate AI summary") st.stop() sanitized_summary = summary_info['data'] # 打印内容的原始表示,检查是否有转义字符 tab_ai_summary.write(repr(sanitized_summary)) tab_ai_summary.markdown(sanitized_summary)
如果发现**被转义,用字符串替换恢复:
sanitized_summary = sanitized_summary.replace('\*\*', '**') tab_ai_summary.markdown(sanitized_summary)
2. 清理特殊/不可见字符
文本中的非标准字符(如特殊连字符‑、不可见控制字符)可能干扰Markdown解析,清理后再渲染:
import re # 移除不可见控制字符 cleaned_summary = re.sub(r'[\x00-\x1F\x7F]', '', sanitized_summary) # 替换非标准短横线为普通短横线 cleaned_summary = cleaned_summary.replace('‑', '-') tab_ai_summary.markdown(cleaned_summary)
3. 替换渲染方法
尝试用st.write代替st.markdown,st.write会自动识别并解析Markdown格式:
tab_ai_summary.write(sanitized_summary)
4. 检查Markdown语法完整性
确认所有**加粗标记都是成对出现的,若存在未闭合的标记,会导致后续格式混乱。可以手动检查sanitized_summary的内容,或用工具验证Markdown语法正确性。
内容的提问来源于stack exchange,提问作者Volatil3
相关产品推荐
相关产品推荐

