我必须用已知的结构解析一个简单的字符串列表,但是我发现它不必要地笨拙。 我觉得我错过了一个诀窍,也许是一些简单的正则表达式可以让这件事变得微不足道?
这个字符串指的是未来的年/月数,我想把它变成十进制年份。
通用格式:“aYbM”
其中a是年数,b是月数,可以是int,两者都是可选的(以及它们的标识符)
测试用例:
5Y3M == 5.25
5Y == 5.0
6M == 0.5
10Y11M = 10.91666..
3Y14M = raise ValueError("string '%s' cannot be parsed" %input_string)
到目前为止,我的尝试涉及到字符串拆分,虽然它们确实产生了正确的结果,但还是相当麻烦:
^{pr2}$
你可以使用regex模式
也就是说
^{pr2}$当用于
groups()
方法返回分组括号内的匹配部分。^如果组不匹配,则返回{收益率
注意,如果
parse_aYbM
的输入与模式不匹配,会发生什么情况还不清楚。对于上面的代码,不匹配将引发ValueError
:但部分匹配可能返回一个值:
不熟悉python regex,但可以尝试类似
(?<year>[^Y])\D(?<month>[^M]*)\D
可能就是这样。在您可以使用
re.findall
相关问题 更多 >
编程相关推荐