mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python
 | 
						|
 | 
						|
# 2)  Sorting Test
 | 
						|
# 
 | 
						|
#     Sort an input file that consists of lines like this
 | 
						|
# 
 | 
						|
#         var1=23 other=14 ditto=23 fred=2
 | 
						|
# 
 | 
						|
#     such that each output line is sorted WRT to the number.  Order
 | 
						|
#     of output lines does not change.  Resolve collisions using the
 | 
						|
#     variable name.   e.g.
 | 
						|
# 
 | 
						|
#         fred=2 other=14 ditto=23 var1=23 
 | 
						|
# 
 | 
						|
#     Lines may be up to several kilobytes in length and contain
 | 
						|
#     zillions of variables.
 | 
						|
 | 
						|
# This implementation:
 | 
						|
# - Reads stdin, writes stdout
 | 
						|
# - Uses any amount of whitespace to separate fields
 | 
						|
# - Allows signed numbers
 | 
						|
# - Treats illegally formatted fields as field=0
 | 
						|
# - Outputs the sorted fields with exactly one space between them
 | 
						|
# - Handles blank input lines correctly
 | 
						|
 | 
						|
import regex
 | 
						|
import string
 | 
						|
import sys
 | 
						|
 | 
						|
def main():
 | 
						|
	prog = regex.compile('^\(.*\)=\([-+]?[0-9]+\)')
 | 
						|
	def makekey(item, prog=prog):
 | 
						|
		if prog.match(item) >= 0:
 | 
						|
			var, num = prog.group(1, 2)
 | 
						|
			return string.atoi(num), var
 | 
						|
		else:
 | 
						|
			# Bad input -- pretend it's a var with value 0
 | 
						|
			return 0, item
 | 
						|
	while 1:
 | 
						|
		line = sys.stdin.readline()
 | 
						|
		if not line:
 | 
						|
			break
 | 
						|
		items = string.split(line)
 | 
						|
		items = map(makekey, items)
 | 
						|
		items.sort()
 | 
						|
		for num, var in items:
 | 
						|
			print "%s=%s" % (var, num),
 | 
						|
		print
 | 
						|
 | 
						|
main()
 |