Python使用groupby处理标准输入数据块

2024-04-19 14:12:12 发布

您现在位置:Python中文网/ 问答频道 /正文

目标是让一个python脚本进程逐行排序stdin,收集具有相同键的“数据块”,然后在键更改后将该bloc输出为JSON(或任何其他单个对象)。在这个阶段,我只想通过正确使用groupbyitertools来隔离键数据块。在下面的示例中,有两个块,每个块三行。设置是

 cat data.csv | python qwe.py

其中data.csv

^{pr2}$

并且qwe.py

^{3}$

谢谢你的提示。在


Tags: csv数据对象py脚本json目标data
1条回答
网友
1楼 · 发布于 2024-04-19 14:12:12

sys.stdin.readline()只生成第一行1,this,is\n。你应该迭代所有的行。在

使用csv模块,而不是手动拆分每一行。在

import csv
import itertools
import operator
import sys

def main():
    reader = csv.reader(sys.stdin)
    for key, bloc in itertools.groupby(reader, key=operator.itemgetter(0)):
        print '  -' + key
        print list(bloc)

if __name__ == '__main__':    
    main()

相关问题 更多 >