- 论坛徽章:
- 95
|
回复 1# tingshuibanxia
- #!/usr/bin/env python3
- import sys, re
- def file2block(filename):
- with open(filename) as file:
- block = { 'X':None, 'Y':[], 'Z':[] }
- for line in file:
- s = re.search('\t([XYZ])\t', line).group(1)
- if s == 'X':
- if block['X']:
- yield block
- block = { 'X':line, 'Y':[], 'Z':[] }
- else:
- block['X'] = line
- else:
- block[s].append(line)
- yield block
- def print_block(block):
- print(block['X'], end='')
- for Z in block['Z']:
- print(Z, end='')
- # Schwartzian transform
- # Note: May not be worth it.
- Ys = map(lambda r: r[0],
- sorted(map(lambda s: [s, re.search('"(\d+)"', s).group(1)], block['Y']),
- key = lambda r: r[1]))
- for Y in Ys:
- print(Y, end='')
- def main():
- for b in file2block(sys.argv[1]):
- print_block(b)
- if __name__ == '__main__':
- main()
复制代码
|
|