Python未进入for循环
为什么在第二个for循环中从来没有访问过unique这个数组呢?unique是一个字符串数组。
import csv
with open('file.csv', 'rb') as f:
reader = csv.reader(f)
for i in range(len(unique)):
# print unique[i] #prints all the items in the array
for row in reader:
print unique[i] # always prints the first item unique[0]
if row[1]==unique[i]:
print row[1], row[0] # prints only the unique[0] stuff
谢谢你
2 个回答
0
我觉得如果你把嵌套结构改成下面这样,可能会更顺利:
import csv
res = {}
for x in unique:
res[x] = []
with open('file.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
for i in range(len(unique)):
# print unique[i] #prints all the items in the array
if row[1]==unique[i]:
res[unique[i]].append([row[1],row[0]])
#print row[1], row[0] # prints only the unique[0] stuff
for x in unique:
print res[x]
0
我觉得了解程序的运行流程会很有帮助。
首先,它会把 i=0
这个值赋给变量 i,然后它会读取整个 CSV 文件,并且会把 CSV 文件中每一行的 unique[0]
打印出来。等到它完成读取 CSV 文件后,就会进入第二次循环,这时会把 i=1
赋值给 i。因为程序已经读完了文件,所以它不会再进入 for row in reader:
这个循环,最后就会退出这个循环。
进一步说明
csv.reader(f)
实际上不会读取文件,直到你执行 for row in reader
这行代码。之后就没有东西可以再读取了。如果你想多次读取这个文件,建议先把它读入一个列表中,像这样:
import csv
with open('file.csv', 'rb') as f:
reader = csv.reader(f)
rows = [row for row in reader]
for i in range(len(unique)):
for row in rows:
print unique[i]
if row[1]==unique[i]:
print row[1], row[0]