【问题标题】:Python CSV Reader Control FlowPython CSV 阅读器控制流程
【发布时间】:2016-10-26 06:58:47
【问题描述】:

在 Python 的 CSV 阅读器中看到这个功能,我感到相当惊讶。

with open(sys.argv[1]) as csvfile:
    reader = csv.DictReader(csvfile)
    for i in range(3):
        sys.stdout.write('A ')
        for row in reader:
            sys.stdout.write('B ')

#sys.argv[1] is a 3 row csv file

我通常希望这样的代码打印出如下内容:

A B B B A B B B A B B

但是我得到了:

A B B A A

据我了解,这似乎违反了 for 循环的基本流控制属性。我主要怀疑这个迭代器有一个不寻常的属性导致了这种行为。任何解释都会有所帮助,非常感谢。谢谢。

【问题讨论】:

    标签: python csv iterator


    【解决方案1】:

    来自csv.DictReaderreader 对象是一个生成器。它在外部for 的第一次迭代中耗尽了。所以在接下来的迭代中,内部的for 循环没有项目来执行循环。

    【讨论】:

    • 好的。我想我可以通过切换两个 for 循环的位置来解决这个问题。谢谢。
    • @LucaDelSignore 是的,你可以。但是,如果 csv 文件不是太大,您也可以将来自阅读器的项目存储在 list
    • 其实真正的CSV文件很大。
    • 哦,那么切换循环可能会更好
    • 谢谢伙计。感谢您的帮助,并且没有因为缺乏经验而被否决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多