如何组合正则表达式实现非单词与上标字符的下划线替换?
解决方案
你之前的问题出在\W只匹配ASCII范围内的非单词字符,没法覆盖那些Unicode上标字符,而且你尝试的组合正则逻辑不对——应该直接把两类字符合并到同一个匹配集合里,逐个替换为下划线。
可用的合并正则
直接把\W和你指定的上标字符放进同一个字符类,用re.sub全局替换:
import re col_name = "Energy (kWh/m²)" processed = re.sub(r'[\W²³¹⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ]', '_', col_name) print(processed) # 输出: Energy__kWh_m__
为啥之前的组合正则没用?
你写的([²³¹⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ]).*(\W)是在匹配「一个上标字符 + 任意内容 + 一个非单词字符」的整段,不是逐个匹配每个要替换的字符,自然只能替换部分内容。现在这个正则会单独匹配每个非单词字符或上标字符,把它们全换成下划线,完全符合你的需求。
内容的提问来源于stack exchange,提问作者J.Doe
相关产品推荐
相关产品推荐

