繁体   English   中英

if语句后继续读取文件

[英]Continue to read in file after if statement

给定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

创建iterreader ,遍历,与其reader直接和调用next()iter在你的4倍if语句:

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)

通过设置iter reader_iter ,您可以在range(4)循环中以及(自动)在主循环中调用next()


编辑:根据@JonClements的评论, reader已经是iter ,因此在其上使用islice将自动运行:

for line in reader:
    all_decisions.append(map(int, line))
    if all_decisions[-1][4] != 1:
        all_decisions.extend(islice(reader, 4))

尽管我的第一个示例仍然是关于可迭代的工作方式的不错的练习:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM