获取有关字符串索引的错误必须是整数

getting error about string indices must be integers

我收到错误消息:回溯(最近一次调用最后一次): 文件“”,第 10 行,位于 类型错误:字符串索引必须是整数。请帮助我。

python2.7 脚本示例:

import csv
cursor = db.job_templates.find( {}, {'_id': 1, 'rangePercents.questionnaire': 1, 'rangePercents.termMap': 1})
with open('range_percent1.csv', 'wt') as outfile:
    fields = ['_id', 'questionnaire', 'termMap']    
    write = csv.DictWriter(outfile, fieldnames=fields)
    write.writeheader()
    for x in cursor:
        x_id = x['_id']
        for y in x['rangePercents']:
            z = {
                '_id': x_id,
                'rangePercents.questionnaire': y['questionnaire'],
                'rangePercents.termMap': y['termMap']}                               
            write.writerow(z)

数据样本是

"_id": ObjectID("51dc52fec0d988a9547b5201"),
 "rangePercents": {
        "termMap": 0,
        "questionnaire": 100
    }

不要遍历 x['rangePercents'],您已经可以通过 x 访问其中的所有内容。如果你像你正在做的那样迭代,你只是得到你的字典的每个键作为 y,这是一个字符串,因此你得到你的错误。试试这个:

for x in cursor:
    x_id = x['_id']
    y = x['rangePercents']
    z = {
         '_id': x_id,
         'rangePercents.questionnaire': y['questionnaire'],
         'rangePercents.termMap': y['termMap']}                               
    write.writerow(z)