gpt4 book ai didi

Python Regex 匹配 float 一定次数

转载 作者:行者123 更新时间:2023-12-04 02:25:21 28 4
gpt4 key购买 nike

我有这样的数据:

data = '5.2 -34 435, 34 2.908 3, 50 2 54 3, 40 50'

我正在尝试编写一个正则表达式,使由 re.findall 创建的 Python 列表中的每个项目仅包含 3 个或更少的数字,如上所示以逗号分隔。

如果有超过 3 个以逗号分隔的数字,则将剩余的数字放在列表中下一项的逗号之前(只要它小于或等于 3)

理想情况下,上述数据的输出应该是这样的

['5.2 -34 435','34 2.908 3','50 2 54','3','40 50']

我试着写了下面的教程,但似乎效果不太好......

re.findall(r"[-+A-z0-9.\s]{3}", data)

最佳答案

这可以通过使用此正则表达式的 findall 在单个操作中实现:

[+-]?\d+(?:\.\d+)?(?:\s+[+-]?\d+(?:\.\d+)?){0,2}

RegEx Demo

  • 这里我们使用 [+-]?\d+(?:\.\d+)? 作为匹配有符号数的模式,它可能是也可能不是 float 。
  • (?:\s+[+-]?\d+(?:\.\d+)?){0,2} 匹配该数字的更多 0 到 2 个实例代码:
import re
data = '5.2 -34 435, 34 2.908 3, 50 2 54 3, 40 50'
rx = re.compile(r'[+-]?\d+(?:\.\d+)?(?:\s+[+-]?\d+(?:\.\d+)?){0,2}')
print (rx.findall(data))

输出:

['5.2 -34 435', '34 2.908 3', '50 2 54', '3', '40 50']

关于Python Regex 匹配 float 一定次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68139498/

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