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

Dash DataTable过滤字符串时忽略开头零的问题及解决方法

解决Dash DataTable原生过滤忽略字符串前导零的问题

问题原因

Dash DataTable的原生过滤功能会自动尝试将列值转换为数值类型匹配。你的col2列虽存储为字符串,但Dash仍将其解析为数字,导致输入"00500"时被当作数值500处理,进而匹配到包含"500"数字片段的"75001"行。

解决方案

在列配置中明确指定col2的类型为"text",强制过滤逻辑按纯字符串规则执行,保留前导零的匹配精度。

修改后的完整代码:

from dash import Dash, dash_table
import pandas as pd

my_df = pd.DataFrame(
    {
        "col1": ["aabbcc", "bbddcc", "ccddee"],
        "col2": ["00500", "75001", "75013"],
    }
)

app = Dash(__name__, suppress_callback_exceptions=True)

app.layout = dash_table.DataTable(
    data=my_df.to_dict("records"),
    # 为col2列指定text类型,强制按字符串过滤
    columns=[
        {"name": i, "id": i, "type": "text"} if i == "col2" else {"name": i, "id": i}
        for i in my_df.columns
    ],
    filter_action="native",
    filter_options={"placeholder_text": "Filtrer", "case": "insensitive"},
)

if __name__ == "__main__":
    app.run(debug=True)

验证效果

现在在col2的过滤框中输入"00500",表格只会显示值为"00500"的行,不会再匹配"75001"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:43:14