【发布时间】:2022-01-11 15:44:17
【问题描述】:
我正在报废一个网络并提取一些值,我只需要数字的一半。例如,如果字符串显示“-14.32 kcal/mole”,我想得到浮点数 -14.32
为此,我将应用以下代码:
import re
number_string = '-9.2 kcal/mole'
number = re.search(r"[-+]?\d*\.\d+|\d+", number_string).group()
print(number)
输出:-9.2
只要 number_string 是浮点数,它就可以正常工作。但是当数字是负整数时,我会得到该数字的正值。
例如,
import re
number_string = '-4 kcal/mole'
number = re.search(r"[-+]?\d*\.\d+|\d+", number_string).group()
print(number)
输出:4(而不是 -4)
【问题讨论】:
-
通过非捕获组使小数部分可选,例如
[-+]?\d+(?:\.\d+)?。我认为您甚至可以完全跳过交替。 -
您的正则表达式是要么 一个符号,然后是一个带小数点的数字,或 一个不带符号且不带小数点的数字。
标签: python regex integer negative-number