给定一个包含数字且长度与格式位置皆固定的字符串,如'B83C72D1D8E67',现在的需求是,删除给定字符串里的任何一个单个字符为数字的字符串,其余"连续2个数字"则作为1组数字,并判断该组数字是否>=50,若符合条件返回50,否则为0。
对比原字符串,并根据上述规则来修改,预期输出应是"B50C50DDE50"。
如果使用传统的for循环来写,其实还挺费脑子的,光是if语句就嵌套了3层,下图是使用for循环写出来的代码,虽然结果符合预期的输出,但挺麻烦:
类似这种字符串处理的最优解法是re模块里的sub(),即"正则表达式替换"法,非常非常的方便好用,只需提取符合正则表达式'\d{1,2}'的字符串,再替换成自定义函数的返回值即可,请见下图优化后的代码: