为了账号安全,请及时绑定邮箱和手机立即绑定

解析文本文件不同行的有效方法

解析文本文件不同行的有效方法

一只甜甜圈 2021-06-20 16:43:11
我有一个包含如下数据的文本文件:1 --- 1 --- 1002 --- 1 --- 2003 --- 1 --- 1001 --- 2 --- 3002 --- 2 --- 1003 --- 2 --- 400我想提取对应于第二列不同值的第三列数据,例如在第三列中添加与第二列中的数字1对应的三个数字,依此类推。我可以逐行循环遍历文本,然后在每行中找到第三列并添加它们。但这不是我想要的。我应该如何在 Python 中有效地做到这一点?
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

使用itertools.groupby().


例如,我正在使用您的确切“数据结构”(stackoverflow 问题中的一堆文本):


import itertools


data_structure = '''

1 --- 1 --- 100


2 --- 1 --- 200


3 --- 1 --- 100


1 --- 2 --- 300


2 --- 2 --- 100


3 --- 2 --- 400

'''.splitlines()


# create a key function able to extract the data you want to group:

def _key(line):

    return line.strip().split(' --- ')[1] # the 1 here means second column


#cleanup data:

clean_data = (line.strip() for line in data_structure if line.strip())


# then pass it to itertools.groupby:

for key, lines in itertools.groupby(clean_data, key=_key):

    print("Lines that contain number", key, 'in second column:')

    print(', '.join(lines))

结果:


Lines that contain number 1 in second column:

1 --- 1 --- 100, 2 --- 1 --- 200, 3 --- 1 --- 100

Lines that contain number 2 in second column:

1 --- 2 --- 300, 2 --- 2 --- 100, 3 --- 2 --- 400

编辑:既然你编辑了问题,并说你有一个文本文件,那么你可以用它代替data_structure它,它会起作用:


data_structure = open('myfile.txt')

其余代码保持不变


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信