2014-10-24 2 views
-1

Я боролся с этим часами. Я хочу напечатать строки 2 и 3, создать новую строку и напечатать строки 3 и 4 + новую строку, следующую строку 4 и 5 + \ n ... на самом деле весь скрипт делает больше вещей, но это ключевой шаг I я борюсь с.python csv итерация; печать строк 1 и 2, затем 2 и 3 и т. д.

Это мой файл CSV

ids,CLSZ_0.7,CLID_0.7 
ZINC04474603,48,45 
ZINC12496548,48,45 
ZINC12495776,48,45 
ZINC04546442,48,45 
ZINC28631806,48,45 

это мой код

ifile = 'bin_503_07.csv' 

with open(ifile, 'rb') as f: 
    object = csv.reader(f) 
    object.next() #skips first line 
    for row in object: 
     next_row = object.next() 
     print row 
     print next_row 
     print "\n" 

это то, что я получаю в результате (в основном оригинальной .csv, но с новой строки, вставленной между 2 рядами) , Вместо этого мне нужно, чтобы каждая новая пара строк начиналась со второй строки предыдущей пары.

['ZINC04474603', '48', '45'] 
['ZINC12496548', '48', '45'] 


['ZINC12495776', '48', '45'] 
['ZINC04546442', '48', '45'] 


['ZINC28631806', '48', '45'] 
['ZINC08860448', '48', '45'] 


['ZINC04655414', '48', '45'] 
['ZINC08860490', '48', '45'] 

любая помощь очень ценится

+0

Не называйте вашу переменную 'object', так как это зарезервированное слово в Python. Назовите это другим именем. – heltonbiker

+0

спасибо за хороший момент, я обязательно запомню его в следующий раз. Однако это не решает мою проблему, она по-прежнему не работает –

+0

@Pocin: комментарии здесь не для предоставления ответов, которые решают вашу проблему, они для, ну, * комментарии *. Если бы комментарий heltonbiker был предназначен для решения вашей проблемы, он бы разместил его как ответ. :-) – DSM

ответ

1

Вы можете сделать это следующим образом:

ifile = 'bin_503_07.csv' 

with open(ifile, 'rb') as f: 
    reader = csv.reader(f) 
    reader.next() #skips first line 
    previous_row = reader.next() # load first actual line 
    for row in reader: # this already calls "next()" 
     print previous_row 
     print row 
     print # no need to print "\n", empty "print" already does that 
     previous_row = row # "advance" by replacing previous with current 
0
import itertools 

with open('path/to/file') as infile: 
    a,b = tee(infile) 
    next(b,None) 
    for line1, line2 in zip(a,b): 
     print line1.rstrip('\n') 
     print line2.rstrip('\n') 
     print '' 
Смежные вопросы