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

如何用Python Pandas正则保留冒号并移除列名其他特殊字符

问题:保留Pandas列名中的冒号,同时删除其他特殊字符

原始DataFrame

COL1   | XX:\x84Â\x82Ă\x82Â\  | \x84Â\x82Ă\PPx82Â\
-------|----------------------|--------------------
111    | ABC                  | X
222    | CCC                  | Y
333    | DDD                  | XX

现有代码及问题

用以下代码删除列名特殊字符时,冒号也被一并删除了:

import re

new_names = {col: re.sub(r'[^A-Za-z0-9_]+', '', col) for col in df.columns}
new_n_list = list(new_names.values())

当前输出:

[COL1, XX_A, PP]

需求

修改代码,保留列名中的冒号,同时删除其他特殊字符,期望输出:

[COL1, XX:A, PP]

解决方案

把正则表达式里允许保留的字符集合加上冒号:即可,修改后的代码如下:

import re

new_names = {col: re.sub(r'[^A-Za-z0-9_:]+', '', col) for col in df.columns}
new_n_list = list(new_names.values())

说明

原正则[^A-Za-z0-9_]+的作用是匹配所有不在字母、数字、下划线范围内的字符并替换为空。现在把冒号加入允许集合后,正则只会删除冒号之外的特殊字符,冒号会被保留下来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:30:43