我希望将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
答案 0 :(得分:1)
尝试使用“步长”参数作为范围或xrange:
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];
答案 1 :(得分: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):
答案 2 :(得分:0)
以下代码片段说明了将输入文件中的每一组六行作为元组处理的方法,它删除了一些笨拙的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