Python 2.7 创建类似阅读器的对象

Python 2.7 创建类似阅读器的对象,python-2.7,csv,dictionary,Python 2.7,Csv,Dictionary,在我的脚本中,我正在将csv文件读入字典 csvreader = csv.DictReader(csvfile, delimiter=';', quotechar='"') CSV结构为: "Name";"type" "Name1";"type1" "Name2";"type2" 然后我循环通过csvreader对象,并使用这些行作为创建请求的参数。如果响应代码为

在我的脚本中,我正在将csv文件读入字典

csvreader = csv.DictReader(csvfile, delimiter=';', quotechar='"')
CSV结构为:

"Name";"type"
"Name1";"type1"
"Name2";"type2"
然后我循环通过
csvreader
对象,并使用这些行作为创建请求的参数。如果响应代码为404,我想创建类似的字典
err_obj_dict
,其结构类似于
csv
reader,包含请求失败的行:

err_obj_dict = {'Name': [], 'type': []}

for row in csvreader:
        if row['type'] == 'virtualResource':
            objType = 'virtual'
        else:
            objType = row['type']
....
....
if resp_cd == 400:
    err_obj_dict['Name'].append(row['Name'])
    err_obj_dict['type'].append(objType)
 for row in err_obj_dict:
     resp_cd = ''
     if row['type'] == 'virtualResource':
         objType = 'virtual'
     else:
         objType = row['type']
然后我想通过
err\u obj\u dict
类似的方式循环,如通过
csvreader
创建请求:

err_obj_dict = {'Name': [], 'type': []}

for row in csvreader:
        if row['type'] == 'virtualResource':
            objType = 'virtual'
        else:
            objType = row['type']
....
....
if resp_cd == 400:
    err_obj_dict['Name'].append(row['Name'])
    err_obj_dict['type'].append(objType)
 for row in err_obj_dict:
     resp_cd = ''
     if row['type'] == 'virtualResource':
         objType = 'virtual'
     else:
         objType = row['type']
但剧本给了我:

if row['type'] == 'virtualResource':
TypeError: string indices must be integers, not str

DictReader似乎正在创建不同结构的不同类型的词典。有没有人能帮我创建一个类似ReadDict的字典,或者如何循环使用
err\u obj\u dict
,以获得与
csvreader
相同的结果?

如果您打印csvreader的结果,这将是输出

for row in csvreader:
    print(row)

{'type': 'type1', 'Name': 'Name1'}
{'type': 'type2', 'Name': 'Name2'}
因此,我建议使用字典数组,而不是带有两个键的字典
Name
Type

err_obj_array = []
for row in csvreader:
    if row['type'] == 'virtualResource':
        objType = 'virtual'
    else:
        objType = row['type']
....
....
if resp_cd == 400:
  err_obj_dict = []
  err_obj_dict['Name'] = row['Name']
  err_obj_dict['type'] = objType
  err_obj_array.append(err_obj_dict)
当您想再次循环它时,您可以这样做

for row in err_obj_array:
 resp_cd = ''
 if row['type'] == 'virtualResource':
     objType = 'virtual'
 else:
     objType = row['type']

thnak you@Swetha Shanmugam,那么我如何将err_obj_数组写回CSV文件?你可以使用CSV。我希望答案对你有帮助,如果是这样的话,请接受它:)我甚至用ommiting
err_obj_dict
和使用
err_obj_array.append(dict(row))
来简化它,非常感谢