从文件中读取不同的行以使用

时间:2013-04-07 20:21:19

标签: python file python-2.7

所以,我的文件是这样的:

Mark Brown
12 2345
45 6780


63 3210
Peter Tailor

10 15430
114 1230
23 3450



John Smith
234 12130
11 32410

名称很明显,名称下方有X行,ID为ID,每行有一个VALUE(也有空行)。我需要写一个文件的每个名字,以及最大的VALUE ID,如下所示:

Mark Brown 45
Peter Tailor 10
John Smith 11

如果只有一个名字,我可以做到这一点,但是在其中有X个名字,我不知道:( 有什么想法或帮助吗?

2 个答案:

答案 0 :(得分:0)

我认为首先你读取每一行并检查它是否以字母或数字开头(即如果ist是名称或ID)*然后你为每个名字创建一个元素,其中包含一个包含所有ID的列表。您使用排序算法对它们进行排序,之后,您只需写出所有内容(应该没有问题)

*您还必须检查空行

答案 1 :(得分:0)

有一些空余时间,所以这里是创建字典的代码。我会让你作为练习来理解每一行:)

from itertools import groupby
with open('testing.txt') as file:
    goodlines = [line.strip() for line in file if line.strip()]
    splitted = list( list(val[1]) for val in groupby(goodlines, lambda l: l[0].isdigit()))
    names = [ list(val)[0] for val in splitted[::2] ]
    val_split = [ [v.split() for v in val] for val in splitted[1::2] ]
    val_sorted = [ sorted(val, key=lambda v:int(v[1]))[-1][0] for val in val_split]
    result = dict(zip(names, val_sorted))
print result