字符串中的数字以“非数字”或错误形式出现 - Python [重复]
Posted
技术标签:
【中文标题】字符串中的数字以“非数字”或错误形式出现 - Python [重复]【英文标题】:numbers in string come out as "not numbers" or fals - Python [duplicate] 【发布时间】:2013-06-30 04:07:32 【问题描述】:所以,我在 python 中有一个字符串列表,我试图找出哪些键是数字。
我正在尝试使用list.[key].isdigit()
,但它仅适用于'0'
例如:
list = ['0', '0', '0', '0.450000000000000', '0', '0', '0', '0.550000000000000']
只会确定'0'
是一个数字,但'0.45'
和'0.55'
不是。
我该如何解决这个问题?
非常感谢
【问题讨论】:
查看此链接 - rosettacode.org/wiki/Determine_if_a_string_is_numeric#Python 【参考方案1】:你可以使用异常处理和一个函数:
>>> def is_num(x):
... try :
... float(x)
... return True
... except ValueError:
... return False
...
>>> lis = ['0', '0', '0', '0.450000000000000', '0', '0', '0', '0.550000000000000']
>>> for x in lis:
... print is_num(x)
...
True
True
True
True
True
True
True
True
【讨论】:
【参考方案2】:当空格和文本混合时,这可以应付:
import re
def ok(val):
m = re.match('\s*\d+\.?\d*\s*', val)
if m and m.group(0) == val:
return True
return False
list = ['0', '0.450000000000000', '0', '23x', ' 2.7 ', '2. 7', '1.2.3']
for val in list:
print ok(val), val
# True 0
# True 0.450000000000000
# True 0
# False 23x
# True 2.7
# False 2. 7
# False 1.2.3
【讨论】:
【参考方案3】:您可以替换 '.'用零检查它是否是数字,假设你的列表中只有浮点数和整数......
>>> a
['0', '0.45']
>>> for each in a:
... repl = each.replace('.','0')
... if repl.isdigit():
... print each
...
0
0.45
【讨论】:
以上是关于字符串中的数字以“非数字”或错误形式出现 - Python [重复]的主要内容,如果未能解决你的问题,请参考以下文章