使用Python DictReader获取特定的行和值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python DictReader获取特定的行和值相关的知识,希望对你有一定的参考价值。

我有一个csv文件,我试图得到一个特定的值,比如第20行第3列。

但到目前为止,我所管理的只是显示第3列的所有值(此处称为“名称”)。

这是我的Python代码

d = DictReader(r.csv().split('
'))
for line in d:
    score = line["name"]
    print score

如何显示并获取特定行的值?

答案

天真的soluthyon:

  target_row = 5
  for num, line in enumerate(d):
      if num == target_row:
          print line["name"]
          break

我删除了中间变量score

请注意,这是非最佳的,因为您迭代直到到达所需的行,但我不知道是否有随机访问DictReader中的行。

另一答案

跳到前面的所需行,就像在另一个答案中一样,但是在CSV读取迭代器而不是手动循环上切片:

import csv, itertools
rownum = 20
colname = "name"
line = itertools.islice(d, rownum - 1, rownum).next()
score = line[colname]

(不是最美丽的代码,我知道,但这只是为了说明这一点。)

另一答案

简而言之,将csv.DictReader的输出转换为列表格式并使用index访问值。

注意:通过索引访问时返回的值将是一个对象,其对应于CSV文件中的列名称


使用案例:

我有类似的需求。我只想读取行的子集,比如总共100行的10-15行。

一个简单的解决方案是将其转换为列表:

# Observe that I am converting the output of DictReader into a list format
lines = list(csv.DictReader(open('somefile.csv', 'r')))

# Once I have the list of objects, I can simple access it with range
for i in range(10, 15):
    line = lines[i]
    # If you want to read the value of a specific column
    print line['column_name']

希望这可以帮助。

以上是关于使用Python DictReader获取特定的行和值的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.2 在 csv.DictReader 中跳过一行

在 python 中使用 csv.DictReader 进行数据类型转换的最快方法

Python Dictreader 对字段名进行排序

如何复制python DictReader对象?

带有 UTF-8 数据的 Python CSV DictReader

从 csv.DictReader 中查找字典值