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 5 1395
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)
wes
wes weston <ww*****@att.net> 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
wes weston <ww*****@att.net> wrote in message news:<0g*******************@bgtnsc05-news.ops.worldnet.att.net>... 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)
Wes,
Thank you for reply. But I do not understand mycompare function. Can
you please explain to me how it should work? Thanks
LAd
Lad wrote: wes weston <ww*****@att.net> wrote in message news:<0g*******************@bgtnsc05-news.ops.worldnet.att.net>... 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) Wes, Thank you for reply. But I do not understand mycompare function. Can you please explain to me how it should work? Thanks
compare(a, b) is just a function for comparing two items/lines. I must
return -1 if a<b, +1 if a>b, and 0 if a==b. For example the following
compare moves the ";;;;" records to the end and keeps the order of others
unaffected: items = [";;;;", ";a;b;;", ";b;a;;", "a;b;c;d;e", "a;;;d;e"] def compare(a, b):
.... return cmp(a == ";;;;", b == ";;;;") or cmp(a, b)
.... items.sort(compare) items
[';a;b;;', ';b;a;;', 'a;;;d;e', 'a;b;c;d;e', ';;;;']
As Eddie Corns pointed out, you left some doubt whether that is really what
you want. Here is a more complex compare() that handles the lines as
columns split by ";" and puts empty columns last in the sorting order:
def key(row):
.... return [(not col, col) for col in row.split(";")]
.... def compare(a, b):
.... return cmp(key(a), key(b))
.... items.sort(compare) items
['a;b;c;d;e', 'a;;;d;e', ';a;b;;', ';b;a;;', ';;;;']
If you are on Python 2.4, you don't need the compare() detour and can use
key() directly:
items.sort(key=key) items
['a;b;c;d;e', 'a;;;d;e', ';a;b;;', ';b;a;;', ';;;;']
Finally, the ";;;;" lines don't seem to carry any information - why not
filter them out completely?
items = [line[:-1] for line in file("cfg.txt", "U") if line != ";;;;\n"]
Peter
Peter Otten <__*******@web.de> wrote in message news:<co*************@news.t-online.com>... Lad wrote:
wes weston <ww*****@att.net> wrote in message news:<0g*******************@bgtnsc05-news.ops.worldnet.att.net>... 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) Wes, Thank you for reply. But I do not understand mycompare function. Can you please explain to me how it should work? Thanks
compare(a, b) is just a function for comparing two items/lines. I must return -1 if a<b, +1 if a>b, and 0 if a==b. For example the following compare moves the ";;;;" records to the end and keeps the order of others unaffected:
items = [";;;;", ";a;b;;", ";b;a;;", "a;b;c;d;e", "a;;;d;e"] def compare(a, b): ... return cmp(a == ";;;;", b == ";;;;") or cmp(a, b) ... items.sort(compare) items
[';a;b;;', ';b;a;;', 'a;;;d;e', 'a;b;c;d;e', ';;;;']
Petr,
thank you for help and explanation.
It works
Lad This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: dont bother |
last post by:
This is really driving me crazy.
I have a dictionary feature_vectors{}. I try to sort
its keys using
#apply sorting on feature_vectors
sorted_feature_vector=feature_vectors.keys()...
|
by: BRIAN |
last post by:
I have been trying to use a couple of javascripts to sort a table by
clicking on column headings.
Sorttable.js and tablesort.js which I found on the web...
I am encountering one problem.
In my...
|
by: Sen-Lung Chen |
last post by:
Dear All:
I have question about how to compile those below code.
The architecture is as below:
Independent:
caluating.cc , reading.cc, ran_gen.cc, hamming.cc, sorting.cc,
combine.cc...
|
by: PiPOW |
last post by:
Hi. I have a question. I am developing an application and I have to choose
the most suitable control to show records from some database queries, with
freedom in customizing control layout and...
|
by: yeti349 |
last post by:
Hi, I'm using the following code to retrieve data from an xml file and
populate a javascript array. The data is then displayed in html table
form. I would like to then be able to sort by each...
|
by: richard |
last post by:
OK, I have got bi-directional datagrid sorting down, have a created a
nice sorting class. My question, how can I add sorting to more than one
datagrid on the same page? Everything I have tried has...
|
by: mike-yue |
last post by:
The topic comes from a question:
Would you rather wait for the results of a quicksort, a linear search,
or a bubble sort on a 200000 element array?
1Quicksort
2Linear Search
3Bubble Sort
...
|
by: Boltar |
last post by:
Hi
I need to store a number of integer values which I will then search on
later to see if they exist in my container. Can someone tell me which
container would be quickest for finding these...
|
by: jrod11 |
last post by:
hi,
I found a jquery html table sorting code i have implemented. I am trying to figure out how to edit how many colums there are, but every time i remove code that I think controls how many colums...
|
by: ryjfgjl |
last post by:
ExcelToDatabase: batch import excel into database automatically...
|
by: Vimpel783 |
last post by:
Hello!
Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
|
by: jfyes |
last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: Shællîpôpï 09 |
last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
| |