Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果字符串是数字,如何检查它的类型并将其转换为float?_Python - Fatal编程技术网

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

Python 如果字符串是数字,如何检查它的类型并将其转换为float?,python,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 'T

我有这样的字符串:

"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

首选方法是尝试执行强制转换并捕获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
或者更好的是
尝试强制转换(int,some,val)
尝试强制转换(datetime.datetime,some,val)
,等等