【问题标题】:CSV into list in PythonCSV到Python中的列表
【发布时间】:2014-12-24 16:41:51
【问题描述】:

我已将.csv 文件导入Python 并将其命名为data。它看起来像这样:

aK    bK    id
.124  .121  1
.320  .202  2
.222  .198  3

等等几百行。如何将aK 列和bK 列转换为列表?我试过这个:

aK = []
for row in data:
    aK.append(row[0])

但是 aK 仍然是一个空白列表。

【问题讨论】:

  • 你是如何在数据中导入 csv 的??
  • 你能澄清一下这个问题吗
  • @japem 我想他是在问你如何加载文件并将其转换为 python 字符串/列表/其他对象。您使用的是csv 模块吗?
  • 哦。是的,我是。 >>> 导入 csv >>> a = open('MyFile.csv') >>> data = csv.reader(a)
  • @japem 对于您在评论中发布的代码,很难相信aK 在循环之后是空的,请发布有问题的实际代码正文。(也许您在通过之前使用了文件对象发给csv.reader)

标签: python list csv


【解决方案1】:
import csv

CSV_FILE = "test.csv"

def main():
    with open(CSV_FILE) as inf:
        in_csv = csv.reader(inf, delimiter=" ", skipinitialspace=True)
        header = next(in_csv)       # skip header row
        ak, bk, id = zip(*in_csv)   # get columns

if __name__ == "__main__":
    main()

给了

ak = ('.124', '.320', '.222')
bk = ('.121', '.202', '.198')
id = ('1', '2', '3')

【讨论】:

  • “test.csv”文件是我最初导入的吗?
  • @Hackaholic - 为什么要重新发明轮子?在 Python 中导入模块是微不足道的。此外,csv 模块将比任何手工制作的模块更强大。
  • @iCodez 这 4 行代码,我不认为重新发明了地狱,所有这些 csv 模块都使用了这个内置的函数,比如 split 和 strip
  • @HughBothwell 我明白你为什么寻找delimiter=" " 跳过初始空格。这对于本网站上的数据是有道理的,但我认为 OP 很可能使用了制表符分隔的文件,而 Stackoverflow 将它们转换为空格或文本编辑器做了
【解决方案2】:

你接近它的方式似乎很好。你只是没有展示你是如何创建data

>>> import csv
>>> with open('data.csv') as f:
        aK, bK = [], []
        next(f) # skip headers
        for row in csv.reader(f, delimiter='\t'):
            aK.append(float(row[0]))
            bK.append(float(row[1]))


'aK\tbK\tid\n'
>>> aK
[0.124, 0.32, 0.222]
>>> bK
[0.121, 0.202, 0.198]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 2021-01-23
    相关资源
    最近更新 更多