2016-04-11 15 views
1

条件が満たされている次の行を取得しようとしています。変数にnext()を使用して次の行を格納

for line in file_two: 
    if line.startswith('Query='): 
     line = line.rstrip() 
     header = line 
     header_2 = next(line) 
     print (header) 
     print (header_2) 

それは次のエラーを与えている:

あなたは次の行が file_twoから取得できます。この場合には、イテレータに nextを使用する必要が
header2 = next(line) 

TypeError: 'str' object is not an iterator 

答えて

1

header_2 = next(file_two) 

。なお、 @KlausD. has pointed outこれは通常の反復で次の行をスキップし、forループでその行を取得することもできます。.seek() riginal位置:

pos = file_two.tell() #tell the current position 
header_2 = next(line) 
file_two.seek(pos) #go back to the beginning of the line 

又は交互に次の行を処理するときを示すためするブーリアンフラグを使用:

after_header = False 
for line in file_two: 
    if line.startswith('Query='): 
     line = line.rstrip() 
     header = line 
     #header_2 = next(line) #don't get the next line yet 
     after_header = True #signal for next cycle 
     print (header) 
    elif after_header: 
     header_2 = line 
     print(line) 
     after_header = False 
+2

この意志副作用としてファイルに、または他の言葉で反復子を転送します:2行おきにスキップしてください。 –

+0

私はそれが明らかに意図ではなかったと思っています...ありがとうございます。 –

+1

実際には、ヘッダーラインのすぐ隣にあるラインを取る必要があります。header_2 = next(file_two)は –

関連する問題