【问题标题】:Issue with importing two columns in a CSV file to two different arrays将 CSV 文件中的两列导入到两个不同的数组时出现问题
【发布时间】:2017-06-20 01:10:08
【问题描述】:

目前正在为我的高级更高计算项目编写战舰代码,我正处于最后一个障碍。我正在尝试导入一个名为“leaderboard.csv”的 CSV 文件,该文件包含两列,在 csv 文件(名称和镜头)中设置了标题,里面的数据看起来像这样。


名字 - 镜头


姓名 1 - 19

姓名2 - 24

等等... - ...


这部分代码接收数据并将所有名称存储在 aNames[] 中,然后将所有镜头存储在 aShots[] 中 它按计划为 aNames 工作,所有名称都存储在数组中,然后我可以使用它们,但是 aShots 数组是完全空的,它的代码或多或少是相同的,但标题已更改,仅此而已。 代码如下所示。

    def ChangeFileToArray():
        from csv import DictReader
        with open("leaderboard.csv") as f:
             #Where "Names" and "Shots" are the names of the headings in the CSV file.
             aNames=[row["Names"] for row in DictReader(f)]
             aShots=[row["Shots"] for row in DictReader(f)]
    f.close
    return aNames, aShots

文件的输出在它之前的所有绒毛之后是这样的。


['Name1', 'Name2', 'Name3', 'Name4']

[]


我以前查看过我的解决方案,很多人说要使用 pandas 解决方案,但遗憾的是,这不是我的选择。我最好将其保留在(导入的)csv 模块中。提前致谢。

【问题讨论】:

  • 在您的第一次列表理解之后,f 中没有任何内容可供阅读。
  • 虽然不是整个 csv 文件,但所有镜头都在 csv 文件中原封不动,或者我误解了 f 是什么。
  • 尝试在第二次理解之前添加f.seek(0)
  • 完美运行感谢一堆:D
  • 最好创建两个空列表,然后逐行遍历您的DictReader 并在执行过程中将元素添加到列表中,而不是读取文件两次。

标签: python arrays python-3.x csv data-handling


【解决方案1】:

我对 DictReader 不熟悉,但我会尝试按照下面的代码行做一些事情。如果您正在遍历 DictReader 中的行,请同时处理您想要对每一行执行的所有操作。

aNames = []
aShots = []
for row in DictReader(f):
    aNames.append(row["Names"])
    aShots.append(row["Shots"])
f.close()

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2022-01-08
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多