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('..')
(这会将整数从十进制分量中分割出来)?