遍历命名元组

Looping through a namedtuple

我是 Python 菜鸟,但对编程并不陌生。我广泛搜索了 Whosebug,但没有找到答案(或者不明白我找到了什么)。

这就是我想做的

  1. 从 CVS 文件(50 个字段)中获取信息并放入内存

  2. 循环浏览来自其他来源的信息

  3. 在每次迭代中,遍历 CSV 信息,找到我需要的内容,并结合来自其他来源的信息对其进行处理。

我想知道如何将 CSV 信息写入内存以及如何在另一个循环中循环它

谢谢。

这就是我的进展

# -*- coding: UTF-8 -*-
import csv
from urllib import parse
from collections import namedtuple

# set up namedtuple structure
    ARecord = namedtuple('ArchiveRecord', ['id', 'post_author', 'post_date']) #plus 50 fields

# load csv info to memory 
with open("site-export.csv",encoding="utf-8") as csvfile:
    r = csv.reader(csvfile, delimiter='|', quotechar='"')
    for arch in map(ARecord._make, r):
        print(arch.id) #print to show that something is happening

# loop that gets info from other source
    # loop through csv info from memory 
        # get field values per row by name
        # do something together with info from both source
with open("site-export.csv",encoding="utf-8") as csvfile:
    r = csv.reader(csvfile, delimiter='|', quotechar='"')
    csvInfo = [ARecord._make(row) for row in r]

# loop that gets info from other source
    for arch in csvInfo:
        # use information in arch

您可以使用 csv.DictReaderfieldnames 方法,您可以将列名放入列表中。

如果这些名称与您 namedtuple 中的字段名称相同,那么您可以轻松访问它们。

namedtuple 可以 return 使用 _asdict() 将其数据表示为字典,然后您可以通过 return 编辑的列名访问值15=].