循环不在列表python中递增

时间:2013-12-12 12:18:22

标签: python file for-loop file-io

我在标准输入处获取文件,看起来像

12    125      "neg"       Won the match #getin . P

然后对句子进行单词分析。

我不知道为什么但是循环没有在函数“unigrams_nrc”中增加。 i value is still 0

以下是代码:

def unigrams_nrc(file):
      for line in file:
      (term,score,numPos,numNeg) = re.split("\t", line.strip())
      print sentence[i] #=> prints all 0's i does not increment
      if re.match(sentence[i],term.lower()):
         wordanalysis["unigram"] = found
      else:
         found = False
      if found:
         wordanalysis["trail_unigram"] = found if re.match(sentence[(len(sentence)-1)],term.lower()) else not(found)
         wordanalysis["lead_unigram"] = found  if re.match(sentence[0],term.lower()) else not(found)
         wordanalysis["nonzero_sscore"] = float(score) if (float(score) != 0) else 0             
         wordanalysis["sscore>0"] = (float(score) > 0)
         wordanalysis["sscore"] = (float(score) != 0)

      if re.match(tweet[len(sentence)-1],term.lower()):
         wordanalysis["sscore !=0 last token"] = (float(score) != 0)


for line in sys.stdin:
    #12    125    "neg"       Won the match #getin . P
   (tweetid,num,senti,tweets) = re.split("\t+",line.strip())
   sentence = re.split("\s+", tweets.strip())
   for i in range(0,len(sentence)):
      unigrams_nrc(file)

即使我将i参数传递给函数..仍然没有变化。

2 个答案:

答案 0 :(得分:2)

缩进不正确,但假设它应该像in your other questionprint sentence[i]位于for line in file:循环内。由于i在循环内没有递增,所以你会看到多次打印相同的东西。

第二次调用unigrams_nrc时,file中没有更多行要读取,因此循环执行零次。要再次阅读该文件,您需要关闭并打开它,或者seek到开头。但是,将数据读入例如。一本字典,甚至只是一个列表,都会加速你的程序。

快速解决方法是在打开file = file.readlines()后添加file;其余的代码应该按原样运行。

答案 1 :(得分:0)

你想做这样的事情

def foo1():
    print something[i]

def foo0():
    for i in range(0,number):
        foo1(somethingElse)

这是不可能的!
foo1应该如何知道isentence的价值?如果要使用它们,则必须传递值。

def foo1(something,i):
    print something[i]

def foo0():
    for i in range(0,number):
        foo1(something,i)