目标是让python脚本进程逐行排序stdin
,收集具有相同密钥的“数据块”,然后在密钥更改后将该块作为JSON(或任何其他单个对象)输出。在这个阶段,我只想要能够隔离密钥和密钥。正确使用groupby
和itertools
的数据集团。在下面的示例中,有两个集团,每个集团有三行。设置
cat data.csv | python qwe.py
其中data.csv
是
1,this,is
1,a,test
1,hope,it
2,works,well
2,and,I
2,move,forward
和qwe.py
是
import itertools
import operator
import sys
import re
def main(argv):
for key, bloc in itertools.groupby( sys.stdin.readline().split(',') ,
key=operator.itemgetter(0)):
print '-----' + key
print list(bloc)
if __name__ == "__main__":
main(sys.argv)
感谢任何提示。
答案 0 :(得分:1)
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()