2013-11-27 58 views
0

因此,我应该编写一些代码,它需要一些文本行,通过删除所有非关键词,标点符号等来重新编译它们,最后打印每个代码关键字和它出现在哪些行上。有一次,我的代码正在工作,看起来没有改变任何东西,我开始得到这个错误,我不知道为什么。我并没有想方设法让代码更短或什么,我意识到这远非理想。我只想知道如何解决这个错误。Python - 类型'函数'的参数不是可迭代的错误

编辑 - 错误是58行,CreateIndex中如果Word没有在指数:

下面是代码:

from string import * 

# Program to index sentences 

stopWords = [ "a", "i", "it", "am", "at", "on", "in", "to", "too", "very", \ 
       "of", "from", "here", "even", "the", "but", "and", "is", "my", \ 
       "them", "then", "this", "that", "than", "though", "so", "are" ] 

punctuation = [".",",",":",";","!","?","&","'"] 
stemming=["s","es","ed","er","ly","ing"] 
text={} 
reworkedtext={} 

def inserttext(text): #Function to insert lines of text 
    linecount=1 
    print "Please insert text here:" 
    line = "" 
    while line!=".": 
     line = raw_input() 
     text[linecount]=line 
     linecount+=1 

def reworktext(text): #Reworks the text by removing punctuation and making everything lowercase 
    for line in text: 
     reworkedtext[line]="" 
     for character in range(0,len(text[line])): 
      if text[line][character] not in punctuation: 
       reworkedtext[line]=reworkedtext[line]+lower(text[line][character]) 

def removestopwords(reworkedtext): #Removes stopwords 
    for line in reworkedtext: 
     wordcount=0 
     reworkedtext[line]=split(reworkedtext[line]) 
     for word in range(0,len(reworkedtext[line])): 
      if reworkedtext[line][wordcount] in stopWords: 
       del(reworkedtext[line][wordcount]) 
      else: 
       wordcount+=1 

def stemwords(reworkedtext): #Stems all words 
    for line in reworkedtext: 
     for word in range(0,len(reworkedtext[line])): 
      if reworkedtext[line][word][-2:] in stemming: 
       reworkedtext[line][word]=reworkedtext[line][word][:-2] 
      if reworkedtext[line][word][-3:] in stemming: 
       reworkedtext[line][word]=reworkedtext[line][word][:-3] 
      if reworkedtext[line][word][-1:] in stemming: 
       reworkedtext[line][word]=reworkedtext[line][word][:-1] 

def createindex(reworkedtext): #creates index and prints it 
    linecount=1 
    for line in reworkedtext: 
     for word in range(0,len(reworkedtext[line])): 
      if word not in index: 
       index[word]="" 
       index[word]=str(line) 
       linecount+=1 
      elif index[word]!=str(line): 
       index[word]=index[word]+", "+str(line) 
    for words in index: 
     print words, index[words] 

inserttext(text) 

reworktext(text) 

removestopwords(reworkedtext) 

stemwords(reworkedtext) 

createindex(reworkedtext) 
+0

认真吗?你甚至不会告诉我们这是哪一行? –

+0

哪个功能? – jramirez

+0

废话,对不起!它是 文件“C:\ Program Files(x86)\ Python \ indexer.py”,行75,在 createindex(reworkedtext) 文件“C:\ Program Files文件58,在createindex 如果单词不在索引中: –

回答

1

好像你忘了你的initialze指数字典

def createindex(reworkedtext): #creates index and prints it 
    linecount=1 
    index = {} # <----------- add this line and see what's what :) 
    for line in reworkedtext: 
     for word in range(0,len(reworkedtext[line])): 
      if word not in index: 
       index[word]="" 
       index[word]=str(line) 
       linecount+=1 
      elif index[word]!=str(line): 
       index[word]=index[word]+", "+str(line) 
    for words in index: 
     print words, index[words] 
+0

是的,就是这样。当我删除一些测试代码时,我一定是意外删除了它,但是这样的错误代码从未想到我的思想!谢谢! –

+0

欢迎您:) – JoeC

相关问题