basic python questions

nateastle at gmail.com nateastle at gmail.com
Sat Nov 18 11:50:56 EST 2006


I have taken the coments and think I have implemented most. My only
question is how to use the enumerator. Here is what I did, I have tried
a couple of things but was unable to figure out how to get the line
number.

def Xref(filename):
    try:
        fp = open(filename, "r")
    except:
        raise "Couldn't read input file \"%s\"" % filename
    dict = {}
    line_num=0
    for words in iter(fp.readline,""):
        words = set(words.split())
        line_num = line_num+1
        for word in words:
            word = word.strip(".,!?:;")
            if not dict.has_key(word):
                dict[word] = []
            dict[word].append(line_num)
    fp.close()
    keys = sorted(dict);
    for key in keys:
        print key," : ", dict[key]
    return dict

Marc 'BlackJack' Rintsch wrote:
> In <1163829271.660193.70450 at j44g2000cwa.googlegroups.com>,
> nateastle at gmail.com wrote:
>
> > def Xref(filename):
> >     try:
> >         fp = open(filename, "r")
> >         lines = fp.readlines()
> >         fp.close()
> >     except:
> >         raise "Couldn't read input file \"%s\"" % filename
> >     dict = {}
> >     for line_num in xrange(len(lines)):
>
> Instead of reading the file completely into a list you can iterate over
> the (open) file object and the `enumerate()` function can be used to get
> an index number for each line.
>
> >         if lines[line_num] == "":  continue
>
> Take a look at the lines you've read and you'll see why the ``continue``
> is never executed.
>
> >         words = lines[line_num].split()
> >         for word in words:
> >             if not dict.has_key(word):
> >                 dict[word] = []
> >             if line_num+1 not in dict[word]:
> >                 dict[word].append(line_num+1)
>
> Instead of dealing with words that appear more than once in a line you may
> use a `set()` to remove duplicates before entering the loop.
> 
> Ciao,
> 	Marc 'BlackJack' Rintsch




More information about the Python-list mailing list