Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个字符串并在Python中提取浮点值_Python_Regex - Fatal编程技术网

比较两个字符串并在Python中提取浮点值

比较两个字符串并在Python中提取浮点值,python,regex,Python,Regex,我有一个函数get_number,它比较两个字符串并提取两个整数值 input_regex = "what is (\d{1,50}) plus (\d{1,50})?" def get_number(input_regex, input): match = re.fullmatch(input_regex, input, re.IGNORECASE) if match: number_1 = f'{input[:match.start(0)]

我有一个函数
get_number
,它比较两个字符串并提取两个整数值

input_regex = "what is (\d{1,50}) plus (\d{1,50})?"

def get_number(input_regex, input):  
   match = re.fullmatch(input_regex, input, re.IGNORECASE)
        if match:
            number_1 = f'{input[:match.start(0)]}{match[1]}'
            number_2 = f'{input[:match.start(0)]}{match[2]}'
            ans = int(number_1) + int(number_2)
            return ans
例如:

输入:
“5加1是多少?”

此函数将提取5和1,并将两者相加。 为此,我使用了
“什么是(\d{1,50})加上(\d{1,50})?”

现在我想从字符串中提取浮点值。因此,我应该使用什么来代替
\d
\f
%f
无法处理此问题

从这里得到建议:

改变

input_regex = "what is (\d{1,50}) plus (\d{1,50})?"

这将使用可选的“+”或“-”匹配整数和浮点值。您必须转义结尾的“?”字符才能与普通问号匹配

此外,要以浮点形式输出,您需要更改函数
get_number()
以转换为浮点

def get_number(input_regex, input):  
    match = re.fullmatch(input_regex, input, re.IGNORECASE)
    if match:
        number_1 = f'{match[1]}'
        number_2 = f'{match[2]}'
        ans = float(number_1) + float(number_2)
        return ans
无需在数字中包含
输入[:match.start(0)]
。 例如:

输出:

6.0
-3.5

看起来你实际上要问的是如何处理正则表达式,而不是f字符串,甚至不是Python\d只匹配数字,而不是浮点数中的小数点。是,\d只匹配数字。我需要将浮点数与小数点匹配。这只是我的问题。
input_regex = "what is ([-+]?\d*\.?\d+) plus ([-+]?\d*\.?\d+)\?"
print(get_number(input_regex, "what is 5 plus 1?"))
print(get_number(input_regex, "what is -5.0 plus 1.5?"))
6.0
-3.5