You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则校验逗号空格分隔数字格式问题求助

修复数字格式校验函数的方案

你的原代码存在两个核心问题:

  • 只用re.findall()会匹配字符串中的部分符合片段,哪怕中间混入其他文本也会返回匹配结果,比如0, 13, 24asd, 27里的0,13,24会被误判为有效;
  • 正则没有限定逗号后的单个空格规则,也没有锚定整个字符串的首尾,导致无空格、多空格的情况也会被通过。

下面是修复后的完整代码:

import re

def format_placement(string):
    # 正则规则:整个字符串必须是 数字开头,后面跟着0次或多次「逗号+单个空格+数字」
    pattern = re.compile(r'^\d+(?:, \d+)*$')
    # 使用fullmatch判断整个字符串是否完全符合格式
    return 1 if pattern.fullmatch(string) else 0

正则规则详解

  • ^:匹配字符串的开头,确保没有前置的无效字符
  • \d+:匹配至少一个纯数字(保证每个部分都是合法数字)
  • (?:, \d+)*:非捕获组,匹配「逗号+单个空格+数字」的组合,*表示这个组合可以出现0次或多次(支持单个数字的情况,比如"5"也会返回1;如果要求必须至少两个数字,把*改成+即可)
  • $:匹配字符串的结尾,确保没有后置的无效字符

测试用例验证

  • 有效格式:format_placement("0, 13, 24, 27") → 返回1
  • 无效格式(无空格):format_placement("0,13,24") → 返回0
  • 无效格式(多空格):format_placement("0, 13, 24") → 返回0
  • 无效格式(混入文本):format_placement("0, 13asd, 27") → 返回0
  • 无效格式(开头非数字):format_placement("abc, 123") → 返回0

内容的提问来源于stack exchange,提问作者Frode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:22:47