如何在Python中将十六进制字符串转换为ObjectId [重复]
Posted
技术标签:
【中文标题】如何在Python中将十六进制字符串转换为ObjectId [重复]【英文标题】:how to convert hex string to ObjectId in Python [duplicate] 【发布时间】:2015-08-05 02:15:54 【问题描述】:我是一个 ObjectId 的列表,我正在迭代以查找键是 ObjectId 的字典中的值。
email_count = 0
# user_id_list is a list of ObjectId's
for user_id in user_id_list:
# UuserIdemailCountD is a dict where they keys are objectIds
email_count += UuserIdemailCountD[user_id]
我不断收到以下错误:
email_count += UuserIdemailCountD[user_id]
KeyError: ObjectId('54a9c84ebf2e4e5b258b5412')
当我遍历 user_id_list
并仅打印 ID 时,我会得到一个像 54a9c84ebf2e4e5b258b5412
这样的纯字符串。
将字符串转换为 ObjectId 的答案是什么?如果有,怎么做?
【问题讨论】:
试试这个:email_count+=UuserIdemailCountD.get(user_id, 0) 所以如果 user_id 不存在它会返回 0 这不会影响结果...... UuserIdemailCountD 中的值dict 都是数值吧? 那行得通。买为什么? 你得到了正确的email_count
还是只是一个零?
【参考方案1】:
导入 ObjectId:
from bson import ObjectId
从 ObjectId 到字符串:
oid = ObjectId()
oid_str = str(oid)
# oid_str is now '555fc7956cda204928c9dbab'
从字符串到 ObjectId:
oid_str = '555fc7956cda204928c9dbab'
oid2 = ObjectId(oid_str)
print(repr(oid2))
# ObjectId('555fc7956cda204928c9dbab')
【讨论】:
如何连接 oid2 以便进行这样的查询... q = "_id: $in: [" + ids + "] "以上是关于如何在Python中将十六进制字符串转换为ObjectId [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在Python中将十六进制字符串转换为ObjectId [重复]
如何在 Python 中将单个字符转换为其十六进制 ASCII 值?
如何在 Python 中将变量转换为 denary? [复制]