我有一个 Python 脚本,它读取 .csv 文件并将每个值存储到列表列表中:list[x][y]。我对此没有任何问题。
list = []
i = 0
for row in reader:
list.append([])
list[i].append(row[0])
...
i += 1
我想检查这些字段之一,看看它是否是一个数字(整数)。
当我执行 a时,即使值是 100,print type(list[i][0])
它也会返回 a 。<type 'str'>
下面的 if 语句在for
遍历列表的循环中,所以我想做的是做一个检查:
if type(list[i][0] == types.IntType):
True
else:
False
这可行,但是在 PEP8 中不赞成,所以我应该使用isinstance()
,因此我已将其修改为
# check if a value is entered
if list[i][0] != '':
if isinstance(int(list[i][0]), int):
True
else:
False
else
False
但是我遇到了尝试将字符串转换为 int 的问题(如果用户输入字符串)。
我该如何克服呢?这似乎是一个简单的问题,但是我是 Python 新手,所以我想知道一种简洁有效的方法来处理这个问题。在将值存储到列表之前,我是否应该检查该值是否为 int?
我正在使用 Python2。
谢谢
编辑:我已经isinstance()
围绕一个尝试异常捕获进行了检查,但是我觉得我不应该仅仅为了检查某个东西是否是 int 而求助于这个?只是好奇是否有更简洁的方法来做到这一点。
编辑:我已经使用isdigit
了前面提到的但是我得到了负面的结果。
即给定这个数据集。列表[0][0] = 123,列表[1][0] = asdasd
for i in range(0, 1):
if (list[i][0]).isdigit:
tempInt = list[i][0]
print type(tempInt)
print 'True: ' + tempInt
else:
tempInt = 1
print 'False: ' + tempInt
结果:
<type 'str'>
True: 123
<type 'str'>
True: asdasd