Python“ValueError:无法将字符串转换为浮点数:%”
Posted
技术标签:
【中文标题】Python“ValueError:无法将字符串转换为浮点数:%”【英文标题】:Python "ValueError: could not convert string to float: %" 【发布时间】:2021-01-11 17:45:51 【问题描述】:我有一套说明:
创建一个名为 format_change
的函数,该函数接受一个字符串,例如 Change 列中的字符串,并执行以下操作:
%
符号,请将其删除
将字符串转换为浮点数
如果浮点数为正,则乘以 100
返回结果 float
这是我的代码:
def format_change(string):
if string[-1] == "%":
string = string[-1]
str_as_float = float(string)
if str_as_float > 0:
str_as_float = str_as_float * 100
return str_as_float
然而,当我进入函数时
format_change(0.45%)
它返回输出:
ValueError: 无法将字符串转换为浮点数:'%'
我该怎么做才能正确转换它?
【问题讨论】:
检查切片的工作原理here。您也可以使用str.replace('%','')
删除%
符号。
这是另一个好方法!下次我一定会使用它。会节省我宝贵的时间。非常感谢!
【参考方案1】:
您正在将字符串 '%'
分配给您的变量,但您想要除该字符之外的所有内容。将函数的开头更改为:
def format_change(string):
if string[-1] == "%":
string = string[:-1] # added ':'
【讨论】:
【参考方案2】:试试这个:
def format_change(string):
if string[-1] == "%":
string = string[:-1]
str_as_float = float(string)
if str_as_float > 0:
str_as_float = str_as_float * 100
return str_as_float
print(format_change('0.45%'))
【讨论】:
【参考方案3】:试试这个:
解决方案 1:
def format_change(string):
if string.endswith("%"):
string = string[0:-1]
str_as_float = float(string)
if str_as_float > 0:
str_as_float = str_as_float * 100
return str_as_float
print(format_change('-0.45%'))
解决方案 2:
def format_change(string):
if string.endswith('%'):
return abs(float(string[0:-1]))*100
print(format_change('-0.45%'))
解决方案 3:
def format_change(string):
return abs(float(string.split('%')[0]))*100
print(format_change('-0.45%')
输出:
45.0
【讨论】:
【参考方案4】:如果您正在寻找单衬里,您可以使用这个:
def format_change(string):
return float(string.replace('%',''))*100 if float(string.replace('%',''))>0 else float(string.replace('%',''))
format_change("-50%")
# -50.0
format_change("50%")
# 5000.0
【讨论】:
以上是关于Python“ValueError:无法将字符串转换为浮点数:%”的主要内容,如果未能解决你的问题,请参考以下文章