symbian-qemu-0.9.1-12/python-2.6.1/Demo/comparisons/sortingtest.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #! /usr/bin/env python
       
     2 
       
     3 # 2)  Sorting Test
       
     4 #
       
     5 #     Sort an input file that consists of lines like this
       
     6 #
       
     7 #         var1=23 other=14 ditto=23 fred=2
       
     8 #
       
     9 #     such that each output line is sorted WRT to the number.  Order
       
    10 #     of output lines does not change.  Resolve collisions using the
       
    11 #     variable name.   e.g.
       
    12 #
       
    13 #         fred=2 other=14 ditto=23 var1=23
       
    14 #
       
    15 #     Lines may be up to several kilobytes in length and contain
       
    16 #     zillions of variables.
       
    17 
       
    18 # This implementation:
       
    19 # - Reads stdin, writes stdout
       
    20 # - Uses any amount of whitespace to separate fields
       
    21 # - Allows signed numbers
       
    22 # - Treats illegally formatted fields as field=0
       
    23 # - Outputs the sorted fields with exactly one space between them
       
    24 # - Handles blank input lines correctly
       
    25 
       
    26 import re
       
    27 import string
       
    28 import sys
       
    29 
       
    30 def main():
       
    31     prog = re.compile('^(.*)=([-+]?[0-9]+)')
       
    32     def makekey(item, prog=prog):
       
    33         match = prog.match(item)
       
    34         if match:
       
    35             var, num = match.group(1, 2)
       
    36             return string.atoi(num), var
       
    37         else:
       
    38             # Bad input -- pretend it's a var with value 0
       
    39             return 0, item
       
    40     while 1:
       
    41         line = sys.stdin.readline()
       
    42         if not line:
       
    43             break
       
    44         items = line.split()
       
    45         items = map(makekey, items)
       
    46         items.sort()
       
    47         for num, var in items:
       
    48             print "%s=%s" % (var, num),
       
    49         print
       
    50 
       
    51 main()