[Tutor] alphabetizing a file by lines
orbitz
orbitz at ezabel.com
Sat Jul 17 22:33:08 CEST 2004
lines = open(file).readlines()
lines.sort()
print lines
Dragonfirebane at aol.com wrote:
> 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.
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Tutor maillist - Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
>
>
More information about the Tutor
mailing list