首页 > 解决方案 > 将字符串转换为浮点数(货币),但小数点多于一位

问题描述

所以我在网上抓取脚柜网站,现在当我得到价格时,我得到的价格超过小数点。

我想把它四舍五入到小数点后两位,我该怎么做?

我的价目表:

90.00
170.00
198.00
137.99137.99158.00

当我尝试浮动功能/方法时出现错误,有人可以帮忙:)

print(float(Price))

90.0
170.0
198.0

ValueError: could not convert string to float: '137.99137.99158.00'

我也想将它四舍五入到小数点后两位,所以 90.0 将变为 90.00 :)

标签: pythonpython-3.xfunctionfloating-pointnumbers

解决方案


在再次查看您的价格后,在我看来,多个小数点的问题是由于价格之间缺少空格。也许网络爬虫需要修复?如果你想继续你所拥有的,你可以用正则表达式来做。但我的解决方法只有在价格总是以两位小数给出时才有效。

import re

list_prices = [ '90.00', '170.00', '198.00',  '137.99137.99158.00' ]

pattern_price = re.compile(r'[0-9]+\.[0-9]{2}')
list_prices_clean = pattern_price.findall('\n'.join(list_prices))
print(list_prices_clean)

# ['90.00', '170.00', '198.00', '137.99', '137.99', '158.00']

推荐阅读