Python:为什么这个for循环在第一次迭代之后退出?

2024-05-15 05:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是:我正在从csv导入并尝试遍历数据以检查匹配项。你知道吗

我尝试过的: 我正在尝试嵌套for循环,遍历较大的列表,并检查较小列表中的每个项。你知道吗

仅供参考,“杀虫剂名称”是d\读取器文件中列的标题,因此是键名称。你知道吗

agqfile=open("GCLC-USA-1.csv")
csv_a=csv.reader(agqfile)

d_reader=csv.DictReader(open("Pesticide_output.csv"))

 for row in d_reader:
#     print (row['Pesticide Name'])
    for chem in csv_a:
        print(chem[0],row['Pesticide Name'])
        if chem[0] in row['Pesticide Name']:
             print(chem[0],"found in ",row['Pesticide Name'])
 #     print(row['Pesticide Name'])

我的期望: 外部循环在完成之前不应该退出,但是它在第一次迭代之后退出。 但是,如果我将print语句放在第二个(嵌套的)for循环之前,它会打印每个迭代。你知道吗

我不明白这种行为!你能帮我解释一下吗?你知道吗

我想尽量简短地回答这个问题,但是如果您需要更多信息,例如数据样本或打印数据类型,那么我可以提供这些信息。


Tags: csv数据namein名称信息列表for
1条回答
网友
1楼 · 发布于 2024-05-15 05:30:14

内部循环在第一次外部迭代中耗尽文件对象csv_a,因此其他外部行永远不会进入内部循环。 必须将内容存储在列表中:

agqfile=open("GCLC-USA-1.csv")
csv_a = list(csv.reader(agqfile))

d_reader=csv.DictReader(open("Pesticide_output.csv"))

for row in d_reader:
#     print (row['Pesticide Name'])
    for chem in csv_a:
        print(chem[0],row['Pesticide Name'])
        if chem[0] in row['Pesticide Name']:
             print(chem[0],"found in ",row['Pesticide Name'])
 #     print(row['Pesticide Name'])

相关问题 更多 >

    热门问题