确定值是否为字符串的最有效方法

时间:2018-12-20 20:22:05

标签: python python-3.x

通常,要检测一个字符串字段,我可以检查一下第一个字符是否为字符串。例如:

>>> [str(v)[0].isalpha() for v in ['first', 'last']]
[True, True]

但是,有时候我会拥有数据库或其他字符串字段,但是以数字开头,例如“ 3D”是我遇到的一个字段。

检查列表中的所有项目是否都是字符串的最有效方法是什么?

以下是一些示例:

['1.0', 'test', '3d', '123,000.00', '55']
> False, True, True, False, False

基本上,我想知道一个值是否可以存储为varchar字段或需要转换为非字符串字段。

那会是这样的:

values = ['1.0', 'test', '3d', '123,000.00', 55]
>>> [not re.sub(r'\,|\.', '', str(val)).isdigit() for val in values]
[False, True, True, False, False]

还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

一种有效的方法是在float()块中使用try-except构造函数,因为它使用C语言中实现的内置测试。如果要删除',',请首先删除忽略数千个分隔符:

def not_number(string):
    try:
        float(string.replace(',', ''))
    except ValueError:
        return True
    return False

这样:

values = ['1.0', 'test', '3d', '123,000.00', '55']
[not_number(value) for value in values]

返回:

[False, True, True, False, False]