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

Streamlit同时激活两个函数致HTML表格渲染报错求助

问题分析与解决:双函数激活导致HTML表格渲染错误

问题重现

单独激活short_name或add_flag函数时,HTML表格显示正常;但同时启用两个函数时,浏览器抛出错误:

InvalidCharacterError: Failed to execute 'createElement' on 'Document': The tag name provided ('td�') is not a valid name.

原因解析

这个错误的核心是国旗emoji的编码在HTML解析时破坏了标签结构。当两个函数同时执行时,add_flag会把国旗emoji追加到short_name处理后的球员名末尾,而后续生成HTML表格的过程中,emoji的多字节编码被错误截断或解析,导致<td>标签的字符序列被打乱,出现乱码�,浏览器无法识别这个损坏的标签名,最终抛出错误。

解决方案

方案1:对emoji进行HTML实体编码

把原始emoji转换成HTML实体,避免直接插入多字节字符干扰HTML解析:

import html

def add_flag(player):
    country = str(player['Country']).strip()
    country_plus_flag = flag.get(country, " ")
    # 转义emoji为HTML实体
    encoded_flag = html.escape(country_plus_flag)
    return f"{player['Player']} {encoded_flag}"

方案2:强制HTML使用UTF-8编码

如果是用pandas生成HTML表格,确保输出编码为UTF-8,同时在HTML头部声明编码:

import pandas as pd

# 生成表格时指定UTF-8编码
html_table = players.to_html(encoding='utf-8')
# 拼接完整HTML,添加编码声明
full_html = '<meta charset="UTF-8">' + html_table

方案3:检查国旗emoji的有效性

确认flag字典中的emoji是标准Unicode国旗符号,没有混入不可见控制字符或损坏的字节。可以用Unicode编码值核对,比如🇨🇳的Unicode是U+1F1E8 U+1F1F3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:48:13