James Stroud wrote: > James Stroud wrote: >> Andy wrote: >>> Hi, the file below will print all the keywords in a file and also the >>> line # of the keyword. What I couldn't figure out is to count those >>> keywords per line. For example - "Line #1 has 3 keywords" >>> >>> Can I do like - >>> >>> total[j] = total[j] + numwords(k) >>> "Line number %d has %d keywords" % (j, total[j]) >>> >>> Seems sort of "illegal" in Python? >>> >>> >>> >>> ------------------------------------------------- >>> import keyword, sys, string, fileinput >>> def numwords(s): >>> list = string.split(s) >>> return len(list) >>> >>> # Get the file name either from the command-line or the user >>> if len(sys.argv) != 2: >>> name = raw_input("Enter the file name: ") >>> else: >>> name = sys.argv[1] >>> >>> inp = open(name,"r") >>> linelist = inp.readlines() >>> total, words,lines = 0, 0, 0 >>> >>> for i in range(len(linelist)): >>> line = linelist[i] >>> tempwords = line.split() >>> for k in tempwords: >>> if keyword.iskeyword(k): >>> total = total + numwords(k) >>> j = i + 1 >>> print" The word * %s * belongs in line number: %d" % (k, >>> j) >>> >>> print "Total keywords in this file are: %d" %(total) >>> >> >> You probably want something that goes a little like this: >> >> for i,line in enumerate(linelist): >> for k in line.split(): >> if keyword.iskeyword(k): >> total += line.count(k) >> print "The word '%s' belongs in line num: %d" % (k, i+1) >> >> print "Total keyords are: %d" % total >> >> James > > Oops, that over-counts, I forgot to put a continue in. Also, keeping a > cache of the split line will probably be faster. > > for i,line in enumerate(linelist): > line = line.split() > for k in line: > if keyword.iskeyword(k): > total += line.count(k) > print "The word '%s' belongs in line num: %d" % (k, i+1) > continue > > print "Total keyords are: %d" % total > > > James
I should really wait until I've had some coffee. Not continue, but break! for i,line in enumerate(linelist): line = line.split() for k in line: if keyword.iskeyword(k): total += line.count(k) print "The word '%s' belongs in line num: %d" % (k, i+1) break print "Total keyords are: %d" % total -- http://mail.python.org/mailman/listinfo/python-list