我有一个 Python 脚本,它读取 .csv 文件并将每个值存储到列表列表中:list[x][y]。我对此没有任何问题。
list = []
i = 0
for row in reader:
list.append([])
list[i].append(row[0])
...
i += 1
我想检查这些字段之一,看看它是否是一个数字(整数)。
当我执行一个print type(list[i][0])
它返回一个<type 'str'>
即使该值是 100。
下面的 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。
Thanks
编辑:我已经包装了isinstance()
检查 try 异常捕获,但是我觉得我不应该仅仅为了检查某些东西是否是 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
Results:
<type 'str'>
True: 123
<type 'str'>
True: asdasd