Python 在if语句之后继续读入文件

Python 在if语句之后继续读入文件,python,list,csv,Python,List,Csv,假设if语句为true,我想继续并将CSV文件读取器的下四行附加到列表中。CSV类如何实现这一点 for j in range(3): f = open("Trial_"+ str(num) + "_Game_" + str(j) + ".csv") reader = csv.reader(f, delimiter=',') f.next() for line in reader: all_decisions.append(map(int,line

假设if语句为true,我想继续并将CSV文件读取器的下四行附加到列表中。CSV类如何实现这一点

for j in range(3):
    f = open("Trial_"+ str(num) + "_Game_" + str(j) + ".csv")
    reader = csv.reader(f, delimiter=',')
    f.next()
    for line in reader:
        all_decisions.append(map(int,line))
        if all_decisions[-1][4] == 1: 
            for k in range(4):
                # append the next line in the reader to all_decisions here

创建一个
iter
reader
,直接循环它而不是
reader
,并在
iter上调用
next()
,在
if
语句中调用
4次:

reader_iter = iter(reader)  # <-- using this in both loops
for line in reader_iter:
    all_decisions.append(map(int, line))
    if all_decisions[-1][4] != 1:
        for _, kline in zip(range(4), reader_iter): # zip stops after range(4). we only need kline
            all_decisions.append(kline)

虽然我的第一个例子仍然是一个很好的练习如何迭代:(

可能要考虑使用<代码> ISLICE<代码>这里-比如<代码> kLeNeXT(ISLICE(读者,4,没有))<代码>,然后你不需要<代码> ITER(Reader)< /Cord>无论如何是迭代的,所以将被消耗…(或者无论OP如何尝试…在语句后附加下一个4)
somelist.extend(list(islice(reader,4)))
或者某个东西可以做到这一点……这一点很好。我用一个mock range()来检查我的工作,我没有想到
reader
已经是一个
iter
for line in reader:
    all_decisions.append(map(int, line))
    if all_decisions[-1][4] != 1:
        all_decisions.extend(islice(reader, 4))