如何用Python正则表达式去除字符串开头的所有零?
去除字符串开头所有前导零的正确方法
要解决开头多个零的去除问题,你需要用正则表达式精准匹配字符串开头的连续零,而非替换所有零或单个零。
正确的正则表达式写法
使用 re.sub(r'^0+', '', number):
^:锚定字符串的起始位置,确保只匹配开头的零0+:匹配一个或多个连续的零- 替换为空字符串后,就能一次性去掉所有开头的零,同时保留中间和末尾的零
实际效果示例
- 输入
"0005855048560"→ 输出"5855048560" - 输入
"01568460144"→ 输出"1568460144"
处理特殊情况(全零字符串)
如果遇到全是零的字符串(比如 "0000"),直接替换会得到空字符串。如果需要保留一个零,可以加个简单判断:
import re def remove_leading_zeros(num_str): result = re.sub(r'^0+', '', num_str) return result if result else "0" # 测试示例 print(remove_leading_zeros("0000")) # 输出 "0" print(remove_leading_zeros("1230")) # 输出 "1230"
为什么之前的写法不对?
你之前用的 re.sub(r'0','',number) 会替换字符串里所有的零,完全不符合需求;如果是 re.sub(r'0','',number, 1) 也只会替换第一个零,解决不了多个前导零的问题。只有锚定开头+匹配连续零的写法才精准符合你的要求。
内容的提问来源于stack exchange,提问作者boyenec
相关产品推荐
相关产品推荐

