首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法在指定的行上启动DictReader?

有没有办法在指定的行上启动DictReader?
EN

Stack Overflow用户
提问于 2021-05-19 02:23:54
回答 2查看 28关注 0票数 0

我想打开一个阅读器对象并进行集成,直到'Transaction Date‘匹配为止,在这种情况下,使用DictReader获取一个dict对象。

代码语言:javascript
复制
starting=0
with open(argv[1], 'r')as file:
    transaction = list(csv.reader(file))
    #what line is the dictReader on?
    counter=0
    for line in transaction:
        counter+=1
        if line[0]=='Transaction Date':
            starting=counter-1
    
    a=csv.DictReader(file)
    
    for b in a:
        print(b)

编辑:解决方案

代码语言:javascript
复制
    file=open(argv[1],'r')
    #go to that line
    for i in range(starting):
        file.readline()
        
    #read in as dict
    dict=list(csv.DictReader(file))
EN

回答 2

Stack Overflow用户

发布于 2021-05-20 02:05:15

您可以使用itertools.dropwhile,类似于

代码语言:javascript
复制
from itertools import dropwhile


def f(line):
    return line[0] != 'Transaction Date'


with open(argv[1], 'r') as file:
    transaction = dropwhile(f, csv.reader(file))
    for b in transaction:
        print(b)
票数 1
EN

Stack Overflow用户

发布于 2021-05-19 02:41:10

从DictReader开始;在while循环中,检查每一行,直到满足您的条件;然后使用for循环迭代来处理剩下的行。

代码语言:javascript
复制
import io, csv

data = '''col_a,col_b
transaction week,4
transaction second,5
transaction date,6
foo,7
bar,8
the end,9
'''
with io.StringIO(data) as f:
    reader = csv.DictReader(f)
    row = next(reader)
    while row['col_a'] != 'transaction date':
        row = next(reader)
    for row in reader:
        print(row)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67591989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档