ValueError:无法将字符串转换为浮点数:'31,950'
Posted
技术标签:
【中文标题】ValueError:无法将字符串转换为浮点数:\'31,950\'【英文标题】:ValueError: could not convert string to float: '31,950'ValueError:无法将字符串转换为浮点数:'31,950' 【发布时间】:2020-05-26 19:29:31 【问题描述】:这是我的代码:
def check_price():
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.find(id="itemTitle").get_text()
price = soup.find(id="prcIsum").get_text()
converted_price = float(price[4:10])
converted_title = title[16:61]
if(converted_price < 31.950):
send_mail()
print(converted_title)
print(converted_price)
if(converted_price > 31.000):
send_mail()
这是我得到的错误
File "C:/Users/Mario/PycharmProjects/Bitanga/AI.py", line 55, in <module>
check_price()
File "C:/Users/Mario/PycharmProjects/Bitanga/AI.py", line 20, in check_price
converted_price = float(price[4:10])
ValueError: could not convert string to float: '31,950'
【问题讨论】:
Python 只识别以.
作为小数点分隔符的浮点数,每个docs.python.org/3/reference/…。如果要将字符串'31,950'
解析为浮点数31.95
,则需要替换 逗号。如果应该是31950.0
,则需要删除逗号。
'31,950' 不是有效的浮点数据。
将,
替换为.
以将字符串转换为浮点数。
您从该错误消息中了解/不了解什么?
【参考方案1】:
您必须将字符串31,950
中的,
替换为.
,以便python 可以将其识别为小数分隔符。使用:
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.find(id="itemTitle").get_text()
price = soup.find(id="prcIsum").get_text()
converted_price = float(price[4:10].replace(',', '.'))
converted_title = title[16:61]
if(converted_price < 31.950):
send_mail()
print(converted_title)
print(converted_price)
if(converted_price > 31.000):
send_mail()
【讨论】:
谢谢!我的声誉很低,所以我不能给你一个upvote..但是非常感谢!它有帮助 如果答案解决了您的问题,请accept它。【参考方案2】:这是因为你的字符串中包含一个不能转换成','的字符。 对于从字符串到 int、float、double、long 的转换,您的字符串不应包含任何看起来不像数字的字符。 或者您可以使用正则表达式删除所有此类字符,以便您的字符串中只有纯数字。 例如。
number = str[ /\d+(?:.\d+)?/ ]
【讨论】:
以上是关于ValueError:无法将字符串转换为浮点数:'31,950'的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:无法将字符串转换为浮点数:'2100 - 2850'
ValueError:无法将字符串转换为浮点数:'62,6'
ValueError:无法将字符串转换为浮点数:''20,99''