【问题标题】:How to append list index Python如何附加列表索引Python
【发布时间】:2015-11-29 16:52:33
【问题描述】:

请帮忙,我找不到。

为什么我可以附加row 而不能附加row[2]?它崩溃了。我正在使用 Python 3.4.3。

import csv

with open("file.csv", encoding="UTF8") as csvfile:
    read = csv.reader(csvfile, delimiter=";")

    original = []

    for row in read:
        original.append(row[2])


csvfile.close()
print(original)

谢谢

【问题讨论】:

  • 也许row 包含的元素少于三个?
  • Kevin 可能正在做某事。如果没有看到崩溃的错误消息,就很难调试崩溃。
  • 你怎么知道它崩溃了? :)
  • crash 的错误回溯是什么?
  • 顺便说一句,只是一个注释。无需显式关闭文件 - 它将由上下文管理器关闭 - 删除 csvfile.close() 行。

标签: python csv indexing append row


【解决方案1】:

这看起来是一次令人沮丧的调试体验。

一种可能性是文件中的最后一行只有一个导致问题的项目。

查看情况的一种快速方法(取决于您的文件的长度)可能是逐行打印并查看发生了什么:

for row in read:
    try:
        original.append(row[2])
    except:
        print(row)

如果你用这个运行,你可能会看到崩溃之前发生了什么。

您可能希望对 crash 是什么进行更详细的描述。众所周知,这种模糊的描述很难提供帮助。多一点努力会帮助人们更有效地帮助你。

【讨论】:

  • 谢谢。它冻结了,它需要大约 60% 的 CPU。试过你写的东西,问题是打印(原始)部分,附加似乎工作得很好。也许名单太长了?约1400件。但是,如果我只附加行的话。
  • 我调整了代码。它现在应该只在失败时打印。冻结确实表明某处存在内存泄漏......
【解决方案2】:

我建议您不要尝试在最后打印整个 CSV 列表,这可能会导致某些 IDE 长时间锁定。

相反,您可以只打印最后几个条目来证明它有效:

print("Rows read:", len(original)
print(original[-10:])

【讨论】:

  • 是的,就是这样。一次太多了(1408)谢谢! :-)
猜你喜欢
  • 2015-08-03
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多