我在标准输入处获取文件,看起来像
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
参数传递给函数..仍然没有变化。
答案 0 :(得分:2)
缩进不正确,但假设它应该像in your other question,print 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
应该如何知道i
和sentence
的价值?如果要使用它们,则必须传递值。
def foo1(something,i):
print something[i]
def foo0():
for i in range(0,number):
foo1(something,i)