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