如何用Python去除数字开头的0?覆盖字符串及整数场景
去除数字前导零的Python实现
针对你需要去除数字(字符串或整数类型)前导零的需求,以下是实用的实现方案:
核心说明
Python的整数类型本身不允许存在前导零(除了整数0),直接写000386489会触发语法错误。所以所谓的“整数开头带零”场景,实际只需直接返回整数即可(因为整数本身无多余前导零),核心处理逻辑集中在字符串类型上。
两种实用方案
方案1:返回字符串类型
适合需要保留字符串格式的场景:
def remove_leading_zeros(num): if isinstance(num, int): return str(num) # 转字符串确保格式统一 elif isinstance(num, str): # 去除所有前导零,若原字符串全为0则返回"0" stripped = num.lstrip('0') return stripped if stripped else '0' raise TypeError("仅支持整数或纯数字字符串输入")
方案2:返回整数类型
适合需要数值类型的场景:
def remove_leading_zeros(num): if isinstance(num, int): return num elif isinstance(num, str): stripped = num.lstrip('0') # 全零字符串转成整数0 return int(stripped) if stripped else 0 raise TypeError("仅支持整数或纯数字字符串输入")
测试案例
字符串输入测试
# 方案1测试 print(remove_leading_zeros("0000386489")) # 输出: '386489' print(remove_leading_zeros("0000")) # 输出: '0' print(remove_leading_zeros("01230")) # 输出: '1230' # 方案2测试 print(remove_leading_zeros("0000386489")) # 输出: 386489 print(remove_leading_zeros("0000")) # 输出: 0
整数输入测试
# 方案1测试 print(remove_leading_zeros(386489)) # 输出: '386489' print(remove_leading_zeros(0)) # 输出: '0' # 方案2测试 print(remove_leading_zeros(386489)) # 输出: 386489 print(remove_leading_zeros(0)) # 输出: 0
注意事项
- 如果输入的字符串包含非数字字符,上述函数会报错,若需要处理这类情况,可提前用
str.isdigit()做校验。 - 不要尝试输入
000386489这类带前导零的整数,Python会直接触发语法错误。
内容的提问来源于stack exchange,提问作者Samir ZAABLI
相关产品推荐
相关产品推荐

