打印元素并忽略表中的最后两个元素

时间:2017-04-17 12:06:57

标签: python arrays

我有一个包含以下内容的文本文件:

SKT:SSG:2:1
LN:FNC:1:1
NWS:ENY:2:0

我想打印出表中的元素,忽略最后两个数字元素。这是我到目前为止所做的:

fileName = input("Enter file name:")
match = open(fileName)
table = []

for line in match:
    contents = line.strip().split(':')
    table.append(contents)

#add a loop to leave out last two digits?

print(table)

我开始的输出是:

[['SKT','SSG','2','1'],['LN','FNC','1',1'],['NWS','ENY','2','0']]

我想要的输出:

[['SKT','SSG'],['LN','FNC'],['NWS','ENY']]

我已经研究了一个称为阵列切片的术语,并设法提出:

for i in range(len(table)):
    print(table[i][:-2])

但我不知道如何将其实现到我编写的代码中,因为我还不熟悉文件阅读。任何帮助表示赞赏。问候。

3 个答案:

答案 0 :(得分:1)

假设table中需要完整的行用于其他用途,您可以创建一个新列表并打印新列表:

print([row[:-2] for row in table])

如果不需要完整行,则只需添加相关值,如问题评论中提到的CoryKramer

答案 1 :(得分:0)

您只需修改当前代码,如下所示:

contents = line.strip().split(':')[:-2]

保留剩余的代码。 Split方法返回一个列表,因此您也可以对其进行切片。

答案 2 :(得分:0)

此代码逐行读取文件。每行在“:”字符上拆分以形成列表,并将列表附加到table列表以形成列表列表。最后,打印table中的每个列表减去最后两个元素。

fileName = input("Enter file name:")
match = open(fileName)
table = []

for line in match:
    contents = line.strip().split(':')
    table.append(contents)

print([content[:-2] for content in table])