comparison bin/cdx2tsv.py @ 156:ace590c2fdfc

allow use of global stash
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Mon, 04 Jul 2022 18:12:26 +0100
parents 66d17f7410f2
children
comparison
equal deleted inserted replaced
155:58b90cd52c15 156:ace590c2fdfc
25 file=sys.stderr) 25 file=sys.stderr)
26 exit(1) 26 exit(1)
27 27
28 fields=sys.argv[1:] 28 fields=sys.argv[1:]
29 29
30 fields=[((lambda x,y:(x,eval("lambda f:%s"%y)))(*(f[1:-1].split(',',maxsplit=1))) if f[0]=='(' else f) for f in fields] 30 stash={} # This can be used to save an expensive field computation for re-use:
31 # E.g. '(filename,(lambda g:(stash.__setitem__("T1",g) or g)[3].split(".")[1])(f.split("/",maxsplit=5)))' '(filename,(stash["T1"])[4][0])
32
33 fields=[((lambda x,y:(x,eval("lambda f:%s"%y,globals())))(*(f[1:-1].split(',',maxsplit=1))) if f[0]=='(' else f) for f in fields]
31 for l in sys.stdin: 34 for l in sys.stdin:
32 (key,stamp,jj)=l.rstrip().split(' ',maxsplit=2) 35 (key,stamp,jj)=l.rstrip().split(' ',maxsplit=2)
33 ja=json.loads(jj) 36 ja=json.loads(jj)
34 #print(ja) 37 #print(ja)
35 print('\t'.join((ja.get(f,'NA') if isinstance(f,str) else 38 print('\t'.join((ja.get(f,'NA') if isinstance(f,str) else