如何实现去除前导双零、为两位数补前导零的逻辑?
实现去除前导连续两个零并为两位数添加前导零的方法
方法一:分步字符串处理
假设输入为数字字符串,分两步完成需求:
- 移除开头连续两个零:判断字符串是否以
00开头,若是则截取从第三个字符开始的内容 - 为两位数添加前导零:检查处理后的字符串长度,若为2则在开头拼接一个零
示例代码:
def process_num_str(s): # 去除前导连续两个零 if s.startswith('00'): s = s[2:] # 为两位数添加前导零 if len(s) == 2: s = '0' + s return s # 测试用例 print(process_num_str('00123')) # 输出 '123' print(process_num_str('0012')) # 输出 '012' print(process_num_str('12')) # 输出 '012' print(process_num_str('005')) # 输出 '5'
方法二:正则表达式一次性处理
用正则匹配实现两步逻辑:
- 匹配字符串开头的
00并替换为空,完成去前导双零操作 - 匹配单独的两位数,替换为带前导零的三位字符串
示例代码:
import re def process_num_str(s): s = re.sub(r'^00', '', s) s = re.sub(r'^\d{2}$', r'0\1', s) return s # 测试用例 print(process_num_str('00123')) # 输出 '123' print(process_num_str('0012')) # 输出 '012' print(process_num_str('12')) # 输出 '012'
如果你的实际需求是去除所有前导零后,将数值格式化为至少两位(不足补零),可以使用以下代码:
def process_num_str(s): # 去除所有前导零,空字符串则替换为'0' s = s.lstrip('0') or '0' # 格式化为至少两位,不足补前导零 return s.zfill(2) # 测试用例 print(process_num_str('00123')) # 输出 '123' print(process_num_str('005')) # 输出 '05' print(process_num_str('5')) # 输出 '05'
你可以根据实际场景选择对应的实现方式。
内容的提问来源于stack exchange,提问作者user1492885
相关产品推荐
相关产品推荐

