Python TypeError-字符串索引必须是整数,而不是str
当我打印从MongoDB检索到的数据时,我得到了以下输出: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
[{"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']