这是使用itertools.groupby的另一种方法。该函数groupy
遍历文件isa_group_separator(line)
的每一行并为每行调用line
。isa_group_separator
返回True或False(称为key
),itertools.groupby
然后对产生相同True或False结果的所有连续行进行分组。
这是将行收集到组中的一种非常方便的方法。
import itertools
def isa_group_separator(line):
return line=='\n'
with open('data_file') as f:
for key,group in itertools.groupby(f,isa_group_separator):
# print(key,list(group)) # uncomment to see what itertools.groupby does.
if not key:
data={}
for item in group:
field,value=item.split(':')
value=value.strip()
data[field]=value
print('{FamilyN} {Name} {Age}'.format(**data))
# Y X 20
# F H 23
# Y S 13
# Z M 25