【发布时间】:2022-01-10 14:20:54
【问题描述】:
"1.0".isnumeric() -> 错误
我需要知道该字符串实际上是浮点数还是整数,因为尽管字符串实际上是浮点数,但 .isnumeric() 返回 False
【问题讨论】:
-
您的选择可能是:(a) 使用合适的正则表达式进行测试,或者 (b) 调用
float并捕获任何ValueError异常。如果您搜索更多内容,很可能之前已经问过这个问题。
"1.0".isnumeric() -> 错误
我需要知道该字符串实际上是浮点数还是整数,因为尽管字符串实际上是浮点数,但 .isnumeric() 返回 False
【问题讨论】:
float 并捕获任何 ValueError 异常。如果您搜索更多内容,很可能之前已经问过这个问题。
您可以做的是使用ast.literal_eval 方法将字符串转换为其实际数据类型,然后使用isinstance 方法检查它是否为浮点数。
>>> import ast
>>> string = '1.0'
>>>
>>> num = ast.literal_eval(string)
>>> num
1.0
>>> isinstance(num,float)
True
>>>
同样的方法你可以检查它是否是一个整数。希望这能回答您的问题。
【讨论】:
试试这个功能:
def is_numeric(some_string):
try:
float(some_string)
return True
except ValueError:
return False
if __name__ == "__main__":
print(is_numeric("123"))
print(is_numeric("1.0"))
print(is_numeric("1.0asd"))
输出:
True
True
False
【讨论】: