【问题标题】:read the second row of a csv file into a dict将 csv 文件的第二行读入 dict
【发布时间】:2017-08-26 14:59:33
【问题描述】:

我有一个 csv 文件,看起来像这样:

username,permission,type,avtar
user1,op,member,goldilock
user2,guest
user3,guest

'type' 和 'avtar' 数据仅在第二行 (user1),对于 user2 和 user3,这将为空。 我想要实现的是从第二行获取类型和 avtar 数据并将其放入一个如下所示的 dict 中:

{'type': 'member', 'avtar': 'goldilock'}

我尝试使用内置的 csv.DictReader,我不想为此使用 panda。我可以使用上述模块将 csv 文件的所有内容放入 dict 中,但我不知道如何选择特定行并将它们放入 dict 中。

以下是我到目前为止的代码,是否可以使用 DictReader 模块来实现这一点?还是我应该采用另一种方法?

import csv 
inputFile="test.csv"
with open(inputFile, "rb") as data:
    reader = csv.DictReader(data)
    for row in reader:
        print row['type']

【问题讨论】:

  • 第二行是指标题后的第一行?
  • 是的,那是标题后的第一行,当我的意思是额外的行是空的时,我的意思是不会有数据。只有这两列的第二行保存数据。 (类型和头像)
  • DictReader 这样做,只需对其进行迭代并选择您想要的行。为了练习,您可以遍历 dictreader 并打印它
  • 其实你想要的是文件中的第一行data(表头不算)。这意味着您可以简单地执行row1 = next(csv.DictReader(data))csv 模块中的 DictReader 类将负责跳过标题——它使用它来确定读取一行数据后返回的字典中的键。

标签: python csv dictionary


【解决方案1】:

如果您只想要一行,请不要使用循环。使用迭代器

reader = csv.DictReader(data)
row2 = next(reader) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2022-12-03
    • 2014-09-20
    相关资源
    最近更新 更多