How do I parse a string to a float or int in Python?
In Python, how can I parse a numeric string like "545.2222"
to its corresponding float value, 542.2222
? Or parse the string "31"
to an integer, 31
?
I just want to know how to parse a float string
to a float
, and (separately) an int string
to an int
.
>>> a = "545.2222"
>>> float(a)
545.22220000000004
>>> int(float(a))
545
def num(s):
try:
return int(s)
except ValueError:
return float(s)
Python method to check if a string is a float:
def isfloat(value):
try:
float(value)
return True
except:
return False
A longer and more accurate name for this function could be: isConvertibleToFloat(value)
What is, and is not a float in Python may surprise you:
val isfloat(val) Note
-------------------- ---------- --------------------------------
"" False Blank string
"127" True Passed string
True True Pure sweet Truth
"True" False Vile contemptible lie
False True So false it becomes true
"123.456" True Decimal
" -127 " True Spaces trimmed
"tn12rn" True whitespace ignored
"NaN" True Not a number
"NaNanananaBATMAN" False I am Batman
"-iNF" True Negative infinity
"123.E4" True Exponential notation
".1" True mantissa only
"1,234" False Commas gtfo
u'x30' True Unicode is fine.
"NULL" False Null is not special
0x3fade True Hexidecimal
"6e7777777777777" True Shrunk to infinity
"1.797693e+308" True This is max value
"infinity" True Same as inf
"infinityandBEYOND" False Extra characters wreck it
"12.34.56" False Only one dot allowed
u'四' False Japanese '4' is not a float.
"#56" False Pound sign
"56%" False Percent of what?
"0E0" True Exponential, move dot 0 places
0**0 True 0___0 Exponentiation
"-5e-5" True Raise to a negative number
"+1e1" True Plus is OK with exponent
"+1e1^5" False Fancy exponent not interpreted
"+1e1.3" False No decimals in exponent
"-+1" False Make up your mind
"(1)" False Parenthesis is bad
You think you know what numbers are? You are not so good as you think! Not big surprise.
链接地址: http://www.djcxy.com/p/1322.html上一篇: Spring 4.x / 3.x(Web MVC)REST API和JSON2 Post请求,如何正确使用它?