gpt4 book ai didi

Python 正则表达式匹配组的对象多于预期

转载 作者:太空狗 更新时间:2023-10-30 02:29:19 25 4
gpt4 key购买 nike

我正在使用 re.search 为 3 个独立的数据片段解析一行。 (日期温度和压力)线看起来像这样。

line= "2015-10-08-22-50   27.3   1015.03"

我想使用模式匹配,这样我就可以非常稳健地对抗格式错误的行。由于这个原因,使用 split 失败了。

我构建了以下 re.

m= re.search("^(2\d{3}-\d{2}-\d{2}-\d{2}-\d{2})\s+(\d+.\d+)\s+(\d+.\d+)$", line)

解析很好,但是匹配组让我感到惊讶。

>>> m.groups(1)
('2015-10-08-23-00', '27.3', '1014.99')
>>> m.groups(2)
('2015-10-08-23-00', '27.3', '1014.99')
>>> m.groups(3)
('2015-10-08-23-00', '27.3', '1014.99')

我(天真地)预料到了。

>>> m.groups(1)
('2015-10-08-23-00')
>>> m.groups(2)
('27.3')
>>> m.groups(3)
('1014.99')

现在我通过使用索引来解决这个问题。

dt= m.groups(1)[0]
t = m.groups(2)[1]
p = m.groups(3)[2]

我的结论是,我认为还可以的 re 一定有缺陷或不够干净。

缺少什么?

谢谢,格特

最佳答案

代替:

m.groups(1)

我想你想要:

m.groups()[0]

groups() 的参数是默认值,而不是它返回的元组中的位置。所以你不需要传递任何东西。您确实需要索引它返回的元组。

help(m.groups)
Help on built-in function groups:

groups(...)
groups([default=None]) -> tuple.

Return a tuple containing all the subgroups of the match, from 1.
The default argument is used for groups
that did not participate in the match

关于Python 正则表达式匹配组的对象多于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33048856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com