Python 循环通过一个namedtuple
我是PythonNoob,但对编程并不陌生。我已经广泛地搜索了StackOverflow,但没有找到答案(或者不明白我找到了什么) 这就是我想做的Python 循环通过一个namedtuple,python,csv,namedtuple,Python,Csv,Namedtuple,我是PythonNoob,但对编程并不陌生。我已经广泛地搜索了StackOverflow,但没有找到答案(或者不明白我找到了什么) 这就是我想做的 从CVS文件(50个字段)中获取信息并放入内存 循环浏览其他来源的信息 在每次迭代中,循环浏览CSV信息,找到我需要的内容,并将其与其他来源的信息一起使用 我想知道如何将CSV信息写入内存,以及如何在另一个循环中循环 谢谢 这就是我走了多远 # -*- coding: UTF-8 -*- import csv from urllib import p
# -*- 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
您可以使用
csv.DictReader
并使用fieldnames
方法将列名放入列表中
如果这些名称与namedtuple
中的字段名称相同,则可以轻松访问它们
namedtuple
可以使用\u asdict()
返回以dict表示的数据,然后您可以通过DictReader
返回的列名访问值。是否要将ARecord
的所有实例都放入列表中?抱歉,我不理解这个问题。我想把所有的CSV信息放在内存中,可以循环使用。我读过No.Dube是最好的方法。@ HananCohen你可以考虑<代码> CSV.DICTROADER :谢谢你AbkajJ这正是我要找的。
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