我有一个包含以下内容的文本文件:
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 :(得分: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])