[Tutor] alphabetizing a file by lines

Dragonfirebane at aol.com Dragonfirebane at aol.com
Sat Jul 17 22:22:45 CEST 2004


Hello all,

I'm trying to write a program that alphabetizes a file by the first letter on 
each line. I'm having some problems because as soon as the program finds a 
letter, it looks for the next letter, ignoring subsequent appearances of that 
letter. I can think of a couple ways to fix this but none of them seem to work. 
The first of these would be to add a special character to lines that have 
already been alphabetized, but file.write() writes to the end of a file and i 
would need to write the character at the current position in the file. This might 
be circumvented by creating a file for each line that is alphabetized, but 
that seems a bit extreme . . . The code is below. Any suggestions would be 
appreciated. Future concerns will be alphabetizing past the first letter.

##############
def linum():
    global i
    linu = open("%s%s" % (fn, ext), "r")
    i = 0
    for line in linu.readlines():
        i += 1
    linu.close()
def alph():
    alp = open("alphebatized%s%s" % (fn, ext), "w")
    pal = open("prealp%s%s" % (fn, ext), "w")        ## eventually for 
writing "\xfe" after a line that has been alphabetized
    read = open("%s%s" % (fn, ext), "r")                ## same reason for 
this line until read.close()
    for line in read.read():
        pal.write(line)
    pal.close()
    read.close()
    print i
    for do in range(i):
        falp(alp)
    alp.close()
def falp(alp):
    global a
    read = open("prealp%s%s" % (fn, ext), "r")
    for line in read.readlines():
        try:
            alpn = re.compile("%s(?!\xfe)" % alpha[a], re.IGNORECASE)
            falpn = alpn.match(line)
            if falpn:
                print line
                alp.write(line)
                a += 1
                break
        except IndexError:
            pass
import re
import string
i = 0
a = 0
alpha = ' '.join(string.ascii_letters[:26]).split()
fn = raw_input("Please enter name of file you wish to prioritize: ")
ext = raw_input("Please enter extension of file you wish to prioritize: ")
linum()
alph()
################

Here is random.txt, the file being alphabetized:

K
cx
c
cd
e
X
y
v
l
f
w
Q
z
h
r
i
T
s
p
d
m
n
a
o
j
u
b
G


Thanks in advance, 
Orri

Email: dragonfirebane at aol.com
AIM: singingxduck
Programming Python for the fun of it. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20040717/00ccd201/attachment.htm


More information about the Tutor mailing list