A more direct approach is to write a helper function that extracts the desired data from a field, and use that as the sort key:
hostnames = '''sys01-xxx-austin-tx sys02-xxx-austin-tx sys01-xxx-newark-oh sys01-yyy-newark-oh sys01-yyy-austin-tx sys01-zzz-newark-oh sys02-zzz-newark-oh'''.split() def getCity(hostName): return hostName.split('-', 2)[-1] hostnames.sort(key=getCity) for line in hostnames: print line Kent Kent Johnson wrote: > Tom Tucker wrote: > >>Good morning! Does Python have a sort function thats supports a delimiter? >>For example, I want to sort the below hostnames, based on the city. > > > This is easy to do in Python but you have to break it up into a few steps - > Python's sort doesn't > know how to find fields but you can break the text into fields yourself, then > sort on the desired > field. Here is one way: > > import operator > > hostnames = '''sys01-xxx-austin-tx > sys02-xxx-austin-tx > sys01-xxx-newark-oh > sys01-yyy-newark-oh > sys01-yyy-austin-tx > sys01-zzz-newark-oh > sys02-zzz-newark-oh'''.split() > > # Create a list of field lists by splitting on the first two '-' > fieldData = [ line.split('-', 2) for line in hostnames ] > > # The key parameter must be a function that returns the key > # value from a list item. > # operator.itemgetter creates a function that accesses the desired index > fieldData.sort(key=operator.itemgetter(2)) > > # Put the fields back together and print > for line in fieldData: > print '-'.join(line) > > > Kent > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor