在列表中存储int或str

时间:2016-04-23 02:02:51

标签: python

我创建了一个文本文件,并使用以下命令在Python中打开它:

for word_in_line in open("test.txt"):

循环播放txt文件中一行中的单词。

文本文件只有一行,即:

int 111 = 3 ;

当我使用.split()制作列表时:

print("Input: {}".format(word_in_line))
line_list = word_in_line.split() 

它创建:

 ['int', '111', '=', '3', ';']

我正在寻找一种方法来检查line_list[1]'111')是否为整数。

但是,当我尝试type(line_list[1])时,由于str,它会说''

我的目标是通读txt文件并查看它是整数还是str或其他数据类型等。

2 个答案:

答案 0 :(得分:5)

列表中的内容是一个字符串。所以类型的来临是正确和预期的。

您要做的是检查您的字符串中是否包含所有数字。所以要使用isdigit字符串方法:

line_list[1].isdigit()

根据您在此处尝试验证的确切内容,有些情况下您只需要纯数字,此解决方案就是这样。

可能还有其他情况需要检查您是否有某种号码。例如,10.5。这是isdigit失败的地方。对于这样的情况,您可以查看this答案,该答案提供了一种方法来检查您是否有float

答案 1 :(得分:2)

我不同意上述答案。

任何字符串解析如@ idjaw的line_list[1].isdigit()答案都会在奇数边缘情况下失败。例如,如果数字是浮点数并且类似.50并以点开头怎么办?上述方法不起作用。从技术上讲,我们只关心这个例子中的int,所以这没关系,但总的来说它很危险。

通常,如果您要检查字符串是否为有效数字,最好只尝试将字符串转换为数字,然后相应地处理错误。

def isNumber(string):
    try:
        val = int(string)
        return True
    except ValueError:
        return False