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