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

Python正则匹配字符串失败返回None触发AttributeError问题排查

问题原因及解决方案

核心错误点

  • 正则规则中错误添加了多余的双引号匹配逻辑:你要匹配的资产与时间周期间的分隔符只有,,但正则里写了",",要求匹配被双引号包裹的逗号;两个日期间的分隔符只有-,但正则里写了"-",要求匹配被双引号包裹的减号,这和实际字符串内容完全不符,导致匹配失败返回None,调用groupdict自然报错。
  • 资产字段的匹配规则冗余:(?P<asset>[^","]+)本意是匹配到逗号位置即可,直接写(?P<asset>[^,]+)就足够,多余的双引号排除规则无实际意义。

你在正则测试平台验证时大概率误将字符串字面量首尾的单/双引号当成了字符串实际内容的一部分,才会出现平台测试通过、实际代码运行失败的情况。

修正后代码

import re
s = 'MakeMoney EURUSD,M1 2021.08.06-2021.08.10'
pat1 = re.compile(r'''
(?P<robot>[^\s]+) 
\s 
(?P<asset>[^,]+)
,
(?P<tf>[^\s]+)
\s 
(?P<datefrom>[0-9]{4}[.][0-9]{2}[.][0-9]{2})
-
(?P<dateto>[0-9]{4}[.][0-9]{2}[.][0-9]{2})
''', re.VERBOSE)

m = pat1.search(s)
print(m.groupdict())

运行输出

{'robot': 'MakeMoney', 'asset': 'EURUSD', 'tf': 'M1', 'datefrom': '2021.08.06', 'dateto': '2021.08.10'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:42:02