gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:36:50 25 4
gpt4 key购买 nike

我正在尝试反转读取文件的方式。我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com