Python 如何提取十进制数

Python 如何提取十进制数,python,python-3.x,Python,Python 3.x,在python的早期学习阶段。其目的是提取所有数字,包括小数。我的函数似乎是从每个值中分离所有整数。我试图提取所有数字,包括小数,并在加2.0的同时将它们相加。我试图使用.split()函数,但这给了我更多的麻烦 str1 = input("Enter a string with a colon and a number after it: ") def findSum(str1): temp = "0" Sum = 0 for

python
的早期学习阶段。其目的是提取所有数字,包括小数。我的函数似乎是从每个值中分离所有整数。我试图提取所有数字,包括小数,并在加2.0的同时将它们相加。我试图使用
.split()
函数,但这给了我更多的麻烦

str1 = input("Enter a string with a colon and a number after it: ")
def findSum(str1): 
    temp = "0"
    Sum = 0
    for ch in str1:
        if (ch.isdigit()):
            temp += ch
        else:
            Sum += float(temp)
            temp = "0"
    return Sum + float(temp)
print("Extracted a number from given string and added 2.0 to it: ", findSum(str1) + 2.0)
输入:“测试:3.452”


所需输出:“5.452”

如果字符串中只有一个浮点数,则确实可以使用拆分:

s = "Test: 3.452"

def findSum(s):
    return float(s.rsplit(":",1)[-1].strip()) + 2

print(findSum(s))
# 5.452

您有样本输入和预期输出吗?此外,正则表达式库对此也非常有用。否则,您可以使用.isnumeric()。我还没有学习正则表达式函数,但在执行搜索时经常看到它引用。我的示例输入将包括以下内容:“Test:3.452”,我想要输出:“5.452”您的提示要求输入一个带冒号的字符串(
),您的输入中没有冒号。您编写的代码正在检查空格(默认情况下,
.split()
会打开空格),这就没有什么意义了。这仅仅是为了解析一个
浮点值
?如果是这样,为什么将
2.0
添加到解析结果中会产生一个比输入值略大的数字
1.0
?你的限制条件是什么?为什么只对原始号码调用
float
是不可接受的?为什么没有参数的
split
可以,但您似乎在避免
.split('..')
(这会将整数从十进制分量中分割出来)?