fork(1) download
  1. import re
  2.  
  3. rx = re.compile(r'''
  4. (?P<category>[A-Z][A-Z- ]+[A-Z])
  5. [. ]+
  6. (?P<value>-?\d[.\d]+)\
  7. (?P<unit>M|DEG|KN)
  8. ''', re.VERBOSE)
  9.  
  10. string = '''
  11. WATER DEPTH .......... 20.00 M TENSION AT TOUCHDOWN . 382.47 KN
  12.  
  13. TOUCHDOWN X-COORD. ... -206.75 M BOTTOM SLOPE ANGLE ... 0.000 DEG
  14.  
  15. PROJECTED SPAN LENGTH 166.74 M PIPE LENGTH GAIN ..... 1.72 M
  16. '''
  17.  
  18. matches = [(m.group('category'), m.group('value'), m.group('unit')) \
  19. for m in rx.finditer(string)]
  20. print(matches)
  21.  
Success #stdin #stdout 0.01s 9992KB
stdin
Standard input is empty
stdout
[('WATER DEPTH', '20.00', 'M'), ('TENSION AT TOUCHDOWN', '382.47', 'KN'), ('TOUCHDOWN X-COORD', '-206.75', 'M'), ('BOTTOM SLOPE ANGLE', '0.000', 'DEG'), ('PROJECTED SPAN LENGTH', '166.74', 'M'), ('PIPE LENGTH GAIN', '1.72', 'M')]