【问题标题】:Managing data from CSV import using python使用 python 管理来自 CSV 导入的数据
【发布时间】:2020-06-29 17:22:06
【问题描述】:

我在尝试管理 csv 时遇到了一些障碍。我的目标是打开一个存储在我的 pythonanwywhere 帐户中的 csv 文件,该文件由两列(ids 和 volume)组成,并将这些列拆分为两个列表以进行下游操作,最终输出两个新的 csv 文件。

我经常遇到拆分导入列表的问题。如果我尝试创建一个新列表,我会收到一个索引错误:列表超出范围。 csv 中只有两列,所以我认为索引应该只是 0 和 1。

我尝试了多种方法来处理这些数据,但总是被绊倒。这是我正在使用的当前代码:

import csv
ids =[]
volume =[]

with open('TestImportCSV.csv', newline='') as f:
reader = csv.reader(f, delimiter = '\t')
#reader = csv.reader(f, delimiter = ',')
        for row in reader:
            print(row[0])

如果我只打印行的 csv,它看起来像这样:

['SampleID, Volumes']
['PD0014-8258', '319']
['PD0014-8259', '313']
['PD0014-8117', '513']
['PD0014-8613', '373']
['PD0014-8719', '221']

而打印 row[0] 的索引会导致列表索引超出范围错误并输出:

SampleID, Volumes
PD0014-8258
PD0014-8259
PD0014-8117
PD0014-8613
PD0014-8719

我觉得这可能有一个相当简单的解决方案,但肯定有一些我忽略了的东西。

****编辑**** 在下面添加输入文件格式示例。

Excel CSV: "列 1" "列 2"

SampleID    Volumes
PD0014-8258 319
PD0017-8259 313
PD0014-8117 513 

上传到pythonanywhere:

1 SampleID Volumes
2 PD0014-8258 319
3 PD0014-8259 313
4 PD0014-8117 513

从 pythonanywhere 下载的文件,用记事本打开:

SampleID, Volumes
"PD0014-8258    319",
"PD0014-8259    313",
"PD0014-8117    513", 

【问题讨论】:

  • 您的文件中可能有一个空行。
  • 您确实应该显示文件的第一行和最后一行。并说打印row[0]是否实际上打印了所有行。

标签: python list csv pythonanywhere csv-import


【解决方案1】:

你的代码没问题。

您的输入文件在标题中使用逗号而不是制表符。

请包含 TestImportCSV.csv 文件以确认这一点。

您的输出看起来不可能: 看起来您的标题没有正确的分隔符。仔细看:它缺少 SampleID 之后的结束报价和 Volumes 之前的开始报价。

使用已清理的输入文件检查您的代码。

【讨论】:

  • 这更像是一个评论而不是一个答案。
  • 伙计,您的评论更像是评论而不是答案。 :-)
  • 伙计,我将答案编辑为实际答案:“您的代码很好。”在其他新闻中,原始问题的问号正好为零。 :-)
  • 添加 你的代码很好 并不能成为答案,只是更多的评论。尽管 OP 使用的分隔符可能错误,但结果将是错误的输出,而不是异常。
  • 问题是怎么做。他做对了,所以“你的代码很好”是正确的答案。我不是在猜测。我运行了代码。我得到的结果与他在标题中使用逗号所做的结果相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2020-08-06
相关资源
最近更新 更多