wes weston <[EMAIL PROTECTED]> writes:

>Lad wrote:
>> Hi,
>> I have a file of records of 4 fields each.
>> Each field is separated by a semicolon. That is
>> 
>> Filed1;Ffield2;Field3;Field4
>> 
>> But there may be also empty records such as
>> ;;;;
>> (only semicolons).
>> 
>> For sorting I used
>> #################
>> lines = file('Config.txt').readlines()# a file I want to sort
>> lines.sort()
>> ff=open('ConfigSorted.txt','w')# sorted file
>> ff.writelines(lines)
>> ff.close()
>> ###############
>> It was sorted but empty records were first. I need them to be last(at
>> the end of the file). How can I do that?
>> 
>> Thanks for help
>> Lad

>Lad,
>    The sort call can have a function name as an arg. You
>could do:

>def mycompare(s1,s2):
>#return -1 to put s1's at front; 1 to put s1's at back; 0 for a tie
>#if s1==";;;;" and s2<>";;;;": return 1

>lines.sort(mycompare)

I can't help feeling that the OP might have really wanted to be sorting on
individual fields rather than whole lines.  In which case I would think of
doing a line.split(';') on each line before sorting.  It would still need
either to use a function to make empty fields go later or alternatively use
DSU (google!) and convert '' to say '~' and back again. This also solves the
problem of what to expect when only some of the fields are blank rather than
all of them.

Eddie

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to