-4

i の値を 6 に増やして、4 つの回答と正解の文字を含む問題を含むファイルを読み取りたいとします。たとえば、次のようになります。

A
Which sport uses the term LOVE ?
Tennis
Golf
Football
Swimming
B
What is the German word for WATER ?
Wodar
Wasser
Werkip
Waski

私のコード:

fd = open(dFile)
lineas=fd.readlines()
fd.close()

for i in range(len(lineas)):
    print "CA:"+lineas[i]+"Q:"+lineas[i+1]+"A1:"+lineas[i+2]+"A2:"+lineas[i+3]+"A3:"+lineas[i+4]+"A4:"+lineas[i+5];
    i=i+6
4

3 に答える 3

1

range または xrange に「step size」引数を使用してみてください。

fd = open(dFile)
lineas = fd.readlines()
fd.close()

for i in xrange(0, len(lineas), 6):
    print "CA:"+lineas[i]+"Q:"+lineas[i+1]+"A1:"+lineas[i+2]+"A2:"+lineas[i+3]+"A3:"+lineas[i+4]+"A4:"+lineas[i+5];
于 2013-01-14T18:03:03.727 に答える
1

rangeオプションのstep引数があります。

for i in range(0, 10, 3):
    print i  # Prints 0, 3, 6, 9

あなたの場合、6のステップサイズを使用してください。

for i in range(0, len(lineas), 6):
于 2013-01-14T18:03:35.973 に答える
0

次のコード スニペットは、入力ファイルからの 6 行の各グループをタプルとして処理する方法を示していlineas[i], lineas[i+1] ますzip。コードの最初のスニペットは、番号付きの行を含むテスト ファイルを作成するだけです。

with open('eh','w') as fo:
    for i in range(19):
        fo.write('{}\n'.format(i))
...
with open('eh') as fi:
    for (ca,q,a1,a2,a3,a4) in zip(*[iter(fi.readlines())]*6):
        print "CA:"+ca+"Q:"+q+"A1:"+a1+"A2:"+a2+"A3:"+a3+"A4:"+a4

これにより、次のような出力が生成されます

CA:0
Q:1
A1:2
A2:3
A3:4
A4:5

CA:6
Q:7
A1:8
(etc)

注、私は通常、次のようなものを書きます

print 'CA: {} Q: {} A1: {} A2: {} A3: {} A4: {}'.format(ca,q,a1,a2,a3,a4)

それ以外の

print "CA:"+ca+"Q:"+q+"A1:"+a1+"A2:"+a2+"A3:"+a3+"A4:"+a4
于 2013-01-14T18:50:12.053 に答える