“我”在这里有什么不对吗?

时间:2017-12-18 17:57:09

标签: python python-3.x

我想为字母制作四元组

>>> from nltk.probability import FreqDist
>>> from nltk.util import ngrams
>>> from nltk.text import Text
>>> fin= open(r'C:\Users\user\Desktop\quran.txt', "r", encoding='utf-8').read()

我用utf-8

打开文件夹
 >>> generated_ngrams = ngrams(" " + fin, 4,pad_left=False, pad_right=True, right_pad_symbol=' ')

从fin

生成ngrams
>>> for gram in generated_ngrams  :
gram
i+=1
if i > 1000:
 break

我缩短文件以便于处理

(' ', '\ufeff', 'ب', 'ِ')
Traceback (most recent call last):
File "<pyshell#6>", line 3, in <module>
i+=1
NameError: name 'i' is not defined

这是我的错误

3 个答案:

答案 0 :(得分:1)

我不完全确定你的其余代码会发生什么,但在尝试增加之前我从未初始化。这就像添加1到无,这会引发错误。添加以下行:

i = 0

在你的For声明之前

。如果在For之后添加,则每次循环都会得到i = 1,因为每次都会将1添加到0。

此外,克变量未在任何地方使用,这也会引发错误。无论价值是什么,它都应该用于在你的方法中做一些事情。否则,迭代generate_ngrams是没有意义的。

答案 1 :(得分:0)

请使用以下代码,这可能会有帮助。

i = 0
for gram in generated_ngrams:
    print(gram)
    i+=1
    if i > 1000:
       break

答案 2 :(得分:0)

在Python中,enumerate函数允许您使用自动计数器循环访问某些内容。

对于您的示例,您可以编写如下代码:

for i, gram in enumerate(generated_ngrams):
    if i > 1000:
        break

我敢说这将是更加pythonic的方式。