basic python questions
tom
tom at t0mb.net
Sat Nov 18 12:13:08 EST 2006
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
> 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