Python csv.DictReader - 如何反转输出?

标签 python csv dictionary reverse

我正在尝试反转读取文件的方式。我正在使用 DictReader,因为我想要字典中的内容。我想读取文件中的第一行并将其用于键,然后反向(从下到上)解析文件,有点像 linux“tac”命令。是否有捷径可寻?下面是我将文件读入字典并将其写入文件的代码...

reader = csv.DictReader(open(file_to_parse, 'r'), delimiter=',', quotechar='"')
for line in reader:
    # ...

这段代码可以正常处理文件,但是..我需要它从最后读取文件。

换句话说,我希望它读取文件:

fruit, vegetables, cars
orange, carrot, ford
apple, celery, chevy
grape, corn, chrysler

并能够让它返回:

{' cars': ' chrysler', ' vegetables': ' corn', 'fruit': 'grape'}
{' cars': ' chevy', ' vegetables': ' celery', 'fruit': 'apple'}
{' cars': ' ford', ' vegetables': ' carrot', 'fruit': 'orange'}

代替:

{' cars': ' ford', ' vegetables': ' carrot', 'fruit': 'orange'}
{' cars': ' chevy', ' vegetables': ' celery', 'fruit': 'apple'}
{' cars': ' chrysler', ' vegetables': ' corn', 'fruit': 'grape'}

最佳答案

您必须将整个 CSV 文件读入内存;您可以通过在阅读器对象上调用 list() 来实现:

with open(file_to_parse, 'rb') as inf:
    reader = csv.DictReader(inf, skipinitialspace=True)
    rows = list(reader)

for row in reversed(rows):

请注意,我在这里将文件用作上下文管理器以确保文件已关闭。您还想以二进制模式打开文件(将换行符处理留给 csv 模块)。您传递给 DictReader() 的其余配置是默认设置,因此我省略了它们。

我将 skipinitialspace 设置为 True,从您的示例输入和输出来看,您的定界符后确实有空格;该选项删除了这些。

csv.DictReader() 对象负责读取第一行作为键。

演示:

>>> import csv
>>> sample = '''\
... fruit, vegetables, cars
... orange, carrot, ford
... apple, celery, chevy
... grape, corn, chrysler
... '''.splitlines()
>>> reader = csv.DictReader(sample, skipinitialspace=True)
>>> rows = list(reader)
>>> for row in reversed(rows):
...     print row
... 
{'cars': 'chrysler', 'vegetables': 'corn', 'fruit': 'grape'}
{'cars': 'chevy', 'vegetables': 'celery', 'fruit': 'apple'}
{'cars': 'ford', 'vegetables': 'carrot', 'fruit': 'orange'}

关于Python csv.DictReader - 如何反转输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021540/

相关文章:

python - 改变 turtle 的外观

Python:从子方法调用父方法内的子方法

python - 如何在 Postgres 中使用 Plpython3 返回结果集

java - Content-Disposition 文件扩展名在 Firefox 上无法正常工作

python - Arduino 和 python3 串行通信问题

python - 使用 python 将 xml 数据转储到 csv 文件中的单元格中

sqlite - 在python的多个选项卡中将数据从sqlite导出到Excel文件

Javascript 或 jQuery png 播放器

c# - 可通过索引和键访问的内置列表

ios - 无法从 Swift 3 中的 Userdefaults 检索字典数据