首页 > 解决方案 > 解析未在 Python3 中注册 0 的数字字符串

问题描述

我有这段代码可以在 Python 中重新格式化字符串。所以'abc123'可以是'a1b2c3'或'1a2b3c'或'1b3a2c'等等。基本上排列规则是一个字母跟随一个数字,一个数字跟随一个字母。据我所知,它适用于除 1 之外的所有情况。当字符串中某处存在零时,程序在解析时完全忽略它,就好像它是一个空格一样。因此,如果输入为“0abc12”,则输出应为“0a1b2c”时变为“a1b2c”。我怎样才能解决这个问题?

def reformat(s: str) -> str:
    nums = []
    chars = []
    new_str = ""
    for char in s:
        try:
            if int(char):
                nums.append(char)
        except ValueError:
            chars.append(char)
    if len(chars) == len(nums):
        for i in range(len(chars)):
            new_str += chars[i] + nums[i]
    elif len(chars) == len(nums) + 1:
        for i in range(len(nums)):
            new_str += chars[i] + nums[i]
        new_str += chars[-1]
    elif len(nums) == len(chars) + 1:
        for i in range(len(chars)):
            new_str += nums[i] + chars[i]
        new_str += nums[-1]
    else:
        new_str = ""
    return new_str

标签: python

解决方案


这行:if int(char):是问题。

int('0')等于0- 并且语句与 -if 0:相同,if False:因此当 char 为 0 时,以下行不会运行。

尝试删除 if 语句,try except 子句应该足够了。


推荐阅读