我使用DictReader
指定字段名,但并非所有列都有用,甚至不包含数据。如何指定要标记的列?这是我的代码:
my_tot_reader = csv.DictReader(tot_file, delimiter=';', restkey='Empty Field')
my_tot_reader.fieldnames = ("Date",
"Pivot ID",
"Empty Field",
"Empty Field",
"Empty Field",
"Empty Field",
"Empty Field",
"Status")
答案 0 :(得分:2)
您只需对要忽略的字段重复使用相同的密钥即可;你最终会在行字典中输入一个这样的条目,其中包含一个列值。您必须提供足够的字段来覆盖 想要包含的最后一列。
我将序列作为关键字参数提供,您可以通过乘法构建元组:
my_tot_reader = csv.DictReader(
tot_file, delimiter=';', restkey='ignored',
fieldnames=("Date", "Pivot ID") + ('ignored',) * 5 + ('status',))
我改为使用字段名'ignored'
。
使用引擎dict(zip(fields, columns))
,只会产生与匹配的列和字段一样多的(column, field)
组合;如果fields
短于columns
,则忽略其余列。重复的字段名称只会导致一个字典密钥存活:
>>> columns = ('some_date', 'some_id', 'foo', 'bar', 'baz', 'spam', 'eggs', 'some_status', 'qux', 'flub')
>>> fields = ("Date", "Pivot ID") + ('ignored',) * 5 + ('status',)
>>> dict(zip(fields, columns))
{'Date': 'some_date', 'Pivot ID': 'some_id', 'ignored': 'eggs', 'status': 'some_status'}
然后,将绝对列作为列表分配给restkey
键。如果您想在其他地方使用行字典,请不要在结果行中使用'ignored'
键,或者使用del row['ignored']
将其删除。