basic python questions

tom tom at t0mb.net
Sat Nov 18 18:22:02 CET 2006


tom wrote:
> nateastle at gmail.com wrote:
>   
>> 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.
>>
>>   
>>     
> Try this in the interpreter,
>
> l = [5,4,3,2,1]
> for count, i in enumerate(l):
>     print count, i
>
>
>   
you could do it like this.

for count, line in enumerate(fb):
    for word in line.split():
       etc...

filehandles are iterators themselves.

dont take my words for granted though, i'm kinda new to all this too :)
>> 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