如何在python中使用正则表达式获得特定符号后的浮点值?

2024-06-06 15:43:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我一直在使用正则表达式进行匹配,等等。现在我面临一个小问题,我有一个字符串str = "vans>=20.09 and stands == 'four'"。我想要比较运算符之后的值,我使用正则表达式来提取,我给出的模式在提取int和string之类的值时运行良好,但它没有提取浮点值。什么是最好的模式,以便正则表达式提取所有类型的值(int、float、string)

我的代码:

import re
str = "vans>=20.09 and stands == 'four'" 
rx = re.compile(r"""(?P<key>\w+)\s*[<>=]+\s*'?(?P<value>\w+)'?""")
result = {m.group('key'): m.group('value') for m in rx.finditer(str)}

其中:

{'vans': '20', 'stands': 'four'}

预期产出:

{'vans': '20.09', 'stands': 'four'}

Tags: andkey字符串restringvalue模式group
2条回答

识别比较运算符时也存在问题。以下内容应足以满足所有用例。但是,需要注意的是,对于小数点后没有数字的数字,将只选择小数点前的值

rx = re.compile(r"""(?P<key>\w+)\s*[<>!=]=\s*'?(?P<value>(\w|[+-]?\d*(\.\d)?\d*)+)'?""")

您可以使用\.扩展第二个\w组以包括点

rx = re.compile(r"""(?P<key>\w+)\s*[<>=]+\s*'?(?P<value>[\w\.]+)'?""")

这应该可以很好地工作,像12.34.56这样的字符串也将作为值进行匹配

相关问题 更多 >