如果它是一个数字,如何检查字符串的类型并将其转换为float?

时间:2014-01-22 18:26:07

标签: python

我有像:

这样的字符串
"Some Test"
"00000.sds*Som'e 'Test'01/234232"
"Some Test'01/234232"
"14"
"12.523232"
"-12.523232"

Python中最好的方法(使用某些函数)能够检查字符串的内容以确定它是否可以转换为“float(stringvalue)”,或者它是否必须保留为字符串?结果输出必须是:

"Some Test"
"Some Test'01/234232"
"00000.sds*Som'e 'Test'01/234232"
14
12.523232
-12.523232

1 个答案:

答案 0 :(得分:2)

首选方法是尝试执行强制转换并捕获ValueError:

def cast(numeric_string):
    try:
        return float(numeric_string)
    except ValueError:
        return numeric_string

这里的问题是你真的不知道它是否有效。为了避免检查类型,您可以返回带有成功结果的2元组:

def try_cast(numeric_string):
    try:
        return True, float(numeric_string)
    else:
        return False, numeric_string

然后,要使用,你可以这样做:

did_cast, value = try_cast(my_string)
if did_cast:
     # treat value as a number
else:
     # treat value as a string