Python 在if语句之后继续读入文件
假设if语句为true,我想继续并将CSV文件读取器的下四行附加到列表中。CSV类如何实现这一点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
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))