Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError-字符串索引必须是整数,而不是str_Python_Typeerror - Fatal编程技术网

Python TypeError-字符串索引必须是整数,而不是str

Python TypeError-字符串索引必须是整数,而不是str,python,typeerror,Python,Typeerror,当我打印从MongoDB检索到的数据时,我得到了以下输出: [{"username": "ashish.mishra", "password": "hxMNwFOa", "frequency": "Daily", "name": "Ashish Mishra", "email": "ashish@mail.com"}] 下面是我如何检索它的: user = db.UserData.find() user = dumps(user) print user //this is the printe

当我打印从MongoDB检索到的数据时,我得到了以下输出:

[{"username": "ashish.mishra", "password": "hxMNwFOa", "frequency": "Daily", "name": "Ashish Mishra", "email": "ashish@mail.com"}]
下面是我如何检索它的:

user = db.UserData.find()
user = dumps(user)
print user //this is the printed version above
我想使用每一把钥匙。我试过:

print user['username']

它给了我错误:

TypeError: string indices must be integers, not str

我知道在这些方面有很多线索,但到目前为止我还没有成功。知道怎么做吗?

您必须先将字符串转换为字典,如下所示:

import json

# initialize user here
user_dict = json.loads(user)
print user_dict[0]['username']

列表对象中有一个dictionary对象

这里的问题是Python假定您希望使用提供的索引号从列表中检索一个项

从users变量中删除括号,您的字典将成为字典

users = {"username": "ashish.mishra", "password": "hxMNwFOa", "frequency": "Daily", "name": "Ashish Mishra", "email": "ashish@mail.com"}
print user['username']

无法复制。用户中el的打印类型(用户)和
的输出是什么:打印类型(el)
?如果您实际使用的是
转储(用户)
,那么您就有一个字符串只要使用
db.UserData.find()
,您就可以对db.UserData.find()中的文档在find对象上进行迭代,
“拆下支架“字典列表来自一个外部源,也就是一个JSON文件。我想我没有读过这部分。谢谢你的帮助。上面alexo_o的回答是最好的方法。用
dumps
将对象转换为JSON,然后用
loads
返回到对象是相当愚蠢的。使用原始对象。@interjay是的,我完全同意。你能回答吗?因为我没有使用mongoDB,而且我不知道
find()
返回什么,也不知道推荐使用它的方法,所以我不会发布答案。Padraic Cunningham建议在上面的评论中对其进行迭代。
users = {"username": "ashish.mishra", "password": "hxMNwFOa", "frequency": "Daily", "name": "Ashish Mishra", "email": "ashish@mail.com"}
print user['username']