无需regex、for/if语句实现字符串数字提取及空格分隔
提取数字并保留块分隔的实现方案
你之前的写法是直接提取整个字符串的所有数字字符拼接,自然会丢失不同数字块之间的分隔,以下是符合限制条件的实现:
代码示例
# 示例输入 num_str = "495 * 89 " # 实现逻辑 result = ' '.join(filter(None, map(lambda x: ''.join(filter(str.isdigit, x)), num_str.split())))
执行后result的值就是你需要的495 89。
逻辑说明
- 调用无参数的
split()方法拆分原字符串,会自动把连续空白作为分隔符,同时忽略首尾空白,得到拆分后的片段列表 - 通过
map遍历每个拆分后的片段,提取片段内的所有数字字符拼接为新字符串 - 用
filter(None, 可迭代对象)过滤掉提取后为空的无效片段(即原本完全不含数字的片段) - 最后用
' '.join()将所有有效数字片段用单个空格拼接,得到最终结果
该方案没有使用正则、显式for/if语句,也不需要额外导入任何模块,符合要求。
内容的提问来源于stack exchange,提问作者user4378959
相关产品推荐
相关产品推荐

