2017-04-17 42 views
0

我有一个包含一个文本文件:印花元素,而忽略最后两个元素在表

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]) 

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

+0

为什么不只是把'table.append(contents)'换成'table.append(contents [: - 2])'? – CoryKramer

回答

1

假设需要在table整行的另一个使用情况,您可以创建一个新的列表,并打印新的:

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

如果不需要整行,你可以补充一点,相关的值,如问题评论中提到的CoryKramer

0

你可以简单地如下修改当前的代码:

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

保留剩余的代码,因为它是。 Split方法返回一个列表,所以你也可以对它进行切片。

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])