Advertisement
DeaD_EyE

itertools.groupby()

Dec 21st, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.20 KB | None | 0 0
  1. import csv
  2. from itertools import groupby
  3.  
  4. gruppen = ['6EP1', '6ES7 307', '6ES7 312', '6ES7 314', '6ES7 315', '6ES7 318', '6ES7 321', '6ES7 322', '6ES7 323', '6ES7 326', '6ES7 331', '6ES7 332', '6ES7 334', '6ES7 392', '6ES7 4', '6ES7 343', '6ED1 052-', '6ES7 131-', '6ES7 132-', '6ES7 134-', '6ES7 135-', '6ES7 138-', '6ES7 19']
  5.  
  6. #fmt = '{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}'
  7.  
  8. def sort_by_desc(key):
  9.     return key.get('Typ')
  10.  
  11. def groups(key):
  12.     for i, gruppe in enumerate(gruppen):
  13.         if gruppe in key.get('Typ'):
  14.             return i
  15.     else:
  16.         return -1
  17.  
  18.  
  19. def print_column(data):
  20.     data = '\t'.join([
  21.         data['Kurzbeschreibung'],
  22.         data['Hersteller'],
  23.         data['Typ'],
  24.         data['Zustand'],
  25.         data['Anzahl'],
  26.         data['Einheit'],
  27.         data['Beschreibung'],
  28.         data['Abschreiben'],
  29.         data['In Karton Nr.'],
  30.         ])
  31.     print(data)
  32.  
  33. with open('s7.csv', 'rt', encoding='utf8') as fd:
  34.     data = csv.DictReader(fd)
  35.     for gruppe, dataset in groupby(sorted(data, key=sort_by_desc), groups):
  36.         #print(gruppe)
  37.         for data in sorted(dataset, key=lambda k: k.get('Zustand')):
  38.             print_column(data)
  39.         print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement