假设我们有一个号码作为字符串。号码由数字、空格和/或破折号“-”组成。我们想以某种方式重新格式化号码。规则很少 -
删除开头的所有空格和破折号
将从左侧到右侧的数字分组为长度为 3 的块,直到剩下 4 个或更少的数字。
然后将最后的数字分组如下 -
对于 2 位数字:长度为 2 的单个块。
对于 3 位数字:长度为 3 的单个块。
对于 4 位数字:另外两个长度为 2 的块。
然后这些块被破折号击打。我们必须找到重新格式化的号码。
因此,如果输入类似于 s = "9-6-84102-4 7-8",那么输出将是“968-410-24-78”
让我们看看以下实现以获得更好的理解 -
def solve(s): digits = "" blk = "" for i in s: if i.isnumeric(): blk += i if len(blk) == 3: digits += blk+"-" blk = "" if len(blk) == 0: return digits[:-1] elif len(blk) == 1: return digits[:-2]+"-"+digits[-2]+blk elif len(blk) == 2: return digits+blk s = "9-6-84102-4 7-8" print(solve(s))
"9-6-84102-4 7-8"输出结果
968-410-24-78