2017-12-18 11 views
0

私はUTF-8ここでは「私」は何ですか?

>>> generated_ngrams = ngrams(" " + fin, 4,pad_left=False, pad_right=True, right_pad_symbol=' ') 

でフォルダをオープンしまし文字

>>> 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() 

用クワッドグラムを作りたいがフィン

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

からngramsを生成する私は、ファイルを短くすることのでそれを扱いやすいです

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

これは私が持っているエラーです

+0

'i + = 1'は本質的に' i = i + 1'に変換されます。つまり、定義する前に 'i'という名前の変数を使用しようとしています。あなたがそれを増やそうとする前に 'i'を定義してください。 –

+0

あなたはi' 'に追加しようとしているが、それはgenerated_ngramsにグラムのため –

+0

どこでもまだ定義されていない。 \tグラム \t I = I + 1 \t i>を1000年とします \tブレーク \t ( 'ب'、 ''、 'س'、 '') トレースバック(最新の呼び出しの最後): で ファイル ""、3行目、I = I + 1 NameError:名 'i' は定義されていません – BG83

答えて

1

私はコードの残りの部分で何が起こっているのかよく分かりませんが、増やそうとする前に決して初期化されていません。 1に何も追加しないとエラーになります。 For文の前に、

i = 0

の行を追加します。 Forの後ろに追加すると、毎回0が1に追加されるので、すべてのループでi = 1になります。

さらに、gram変数はどこにも使用されておらず、エラーも発生します。どのような価値グラムであれ、それはあなたの方法の中で何かをするために使用されるべきです。それ以外の場合は、generated_ngramsを反復する必要はありません。

0

下記のコードをご利用ください。 Pythonで

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

enumerate機能は自動カウンターで何かの上にあなたのループすることができます。ご例えば

、次のようなコードを書くことができます:

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

私がこの神託の方法だろうと言って、ベンチャーでしょう。

関連する問題