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
相关产品推荐
相关产品推荐

