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