1

さて、私は Python スクリプトに問題があります。私がする必要があるのは、分割関数のインデックスがループの反復ごとに自動的に増加することです。私はこれをします:

tag = "\'"
while loop<=302:
        for line in f1.readlines():
            if tag in line:
                word = line.split(tag)[num] #num is the index I need to increase

        text = "Word: "+word+"."

        f.write(text)

        num = num + 1
        loop = loop + 1

しかし...インデックスの「num」変数は変更されません...単に同じままです。num インデックスは、取得する必要がある単語を示します。これが、「num = num + 1」を増やす必要がある理由です...

ループの問題は何ですか?

ありがとう!

4

4 に答える 4

0

あなたの質問は紛らわしいです。num = num + 1しかし、for ループと if ステートメントに移動したいと思います。

tag = "\'"
while loop<=302:
    for line in f1.readlines():
        if tag in line:
            word = line.split(tag)[num] #num is the index I need to increase
            num = num + 1

    text = "Word: "+word+"."

    f.write(text)
    loop = loop + 1
于 2013-03-01T18:13:57.133 に答える
0

質問の Benyi のコメントに基づいて - 個々の文に対してこれが必要ですか? インデックスを作成する必要がない場合があります。

>>> mystring = 'hello i am a string'
>>> for word in mystring.split():
         print 'Word: ',word


Word:  hello
Word:  i
Word:  am
Word:  a
Word:  string
于 2013-03-01T18:21:10.717 に答える
0

これには多くのことが間違っているようです。
初め

while loop <= 302:
   for line in f1.readlines():

f1.readlines() は、最初の反復を過ぎたすべての反復で [] になります

2番

for line in f1.readline():
   word = line.split(tag)[num]
   ...
text = "Word: "+word+"."

for ループを機能させたとしても、text常に の最後の反復を使用しますword。これは望ましい動作かもしれませんが、奇妙に思えます。

三番

while loop<=302:
    ...
    loop = loop += 1

のように書いた方が良さそうです。

for _ in xrange(302):

ループはそのスコープ内ではまったく使用されないためです。これは、ループが 0 から始まると想定しています。そうでない場合は、302 を調整して必要な回数だけ繰り返します。

最後に

num = num + 1

これは内部ループの外側にあるため、最初の反復では num は常に同じになりますが、f1.readlines()前に述べたように空であるため、後者は問題になりません。

于 2013-03-01T18:21:54.300 に答える
0

コメントで述べたように、私はあなたの問題に対して別のアプローチをとっています。input.txt に次のエントリがあるとします。

this is a an input file.

次に、次のコードで目的の出力が得られます

lines = []
with open (r'C:\temp\input.txt' , 'r') as fh:
    lines = fh.read()

with open (r'C:\temp\outputfile.txt' , 'w') as fh1:
    for words in lines.split():
        fh1.write("Words:"+ words+ "\n" )
于 2013-03-01T18:31:17.637 に答える