PyMongo-Python列表到MongoDB数据类型的转换
我从以下请求中获得字符串格式的json响应:PyMongo-Python列表到MongoDB数据类型的转换,python,mongodb,type-conversion,pymongo,string-to-datetime,Python,Mongodb,Type Conversion,Pymongo,String To Datetime,我从以下请求中获得字符串格式的json响应: results = requests.request("POST", url, data=json.dumps(payload), headers=header).json()['product'] 样本输出: 打印(结果)-对象类型= 首先需要将所有这些字段转换为特定的数据类型,然后作为文档插入MongoDB exp_date to日期/时间 金额为浮动() 数量到int() 进行数据类型转换的有效方法是什么 new_resu
results = requests.request("POST", url, data=json.dumps(payload), headers=header).json()['product']
样本输出:
打印(结果)-对象类型=
首先需要将所有这些字段转换为特定的数据类型,然后作为文档插入MongoDB
new_result = []
for i in enumerate(results):
i[exp_date] = datetime.strptime(i[exp_date],'%m/%d%Y').replace(hour=0, minute=0, second=0, microsecond=0) #check for empty/null/blank values and replace with default date
new_result.append(i[exp_date])
for i in enumerate(results):
i[amount] = float(i[amount]) #check for empty/null/blank values and replace with 0.00
new_result.append(i[amount])
for i in enumerate(results):
i[qty] = int(i[qty]) #check for empty/null/blank values and replace with 0
new_result.append(i[qty])
我在想,如果有可能像下面这样,还需要知道是否有任何空的、空的或空的字符串值,那么在数据类型转换期间如何用一些默认值替换它
new_result = []
for i in enumerate(results):
i[exp_date] = datetime.strptime(i[exp_date],'%m/%d%Y').replace(hour=0, minute=0, second=0, microsecond=0) #check for empty/null/blank values and replace with default date
new_result.append(i[exp_date])
for i in enumerate(results):
i[amount] = float(i[amount]) #check for empty/null/blank values and replace with 0.00
new_result.append(i[amount])
for i in enumerate(results):
i[qty] = int(i[qty]) #check for empty/null/blank values and replace with 0
new_result.append(i[qty])
db.collection.插入多个(新结果)
新列表输出应如下所示:打印(新结果)
你可以这样做:
导入日期时间
输入值=[
{
“id”:“123456”,
“产品”:“XYZ”,
“出口日期”:“2020年1月3日”,
“金额”:“30.5”,
“数量”:“1”
},
{
“id”:“789012”,
“产品”:“ABC”,
“出口日期”:“2020年4月15日”,
“金额”:“22.57”,
“数量”:“3”
},
{
“id”:“56789”,
“产品”:“AAA”,
“出口日期”:“2020年3月29日”,
“金额”:“,
“数量”:”
}
]
输出_lst=[]
对于输入_lst中的dct:
tmp_dct=dct.copy()
#金额-浮动,数量-整数4
尝试:
tmp_dct['amount']=浮动(dct['amount'])
除:
通过
尝试:
tmp_dct['qty']=int(dct['qty'])
除:
通过
尝试:
tmp_dct['exp_date']=datetime.datetime.strtime(tmp_dct['exp_date'],'%m/%d/%Y')。替换(小时=0,分钟=0,秒=0,微秒=0)#检查空/空/空值并替换为默认日期
输出第一附加(tmp\U dct)
除:
通过
打印(输出)
这更有效,因为您只循环一次。您可以执行以下操作:
导入日期时间
输入值=[
{
“id”:“123456”,
“产品”:“XYZ”,
“出口日期”:“2020年1月3日”,
“金额”:“30.5”,
“数量”:“1”
},
{
“id”:“789012”,
“产品”:“ABC”,
“出口日期”:“2020年4月15日”,
“金额”:“22.57”,
“数量”:“3”
},
{
“id”:“56789”,
“产品”:“AAA”,
“出口日期”:“2020年3月29日”,
“金额”:“,
“数量”:”
}
]
输出_lst=[]
对于输入_lst中的dct:
tmp_dct=dct.copy()
#金额-浮动,数量-整数4
尝试:
tmp_dct['amount']=浮动(dct['amount'])
除:
通过
尝试:
tmp_dct['qty']=int(dct['qty'])
除:
通过
尝试:
tmp_dct['exp_date']=datetime.datetime.strtime(tmp_dct['exp_date'],'%m/%d/%Y')。替换(小时=0,分钟=0,秒=0,微秒=0)#检查空/空/空值并替换为默认日期
输出第一附加(tmp\U dct)
除:
通过
打印(输出)
这更有效,因为您只循环一次。ok。另外,如何检查字符串中的空/空白/空格(金额、日期、数量)并在进行类型转换时对其进行默认设置?它实际上是一个元组列表。因此,给出错误:-AttributeError:“tuple”对象没有属性“copy”。请建议请在你的问题中改变这一点,因为目前它是错误的。请提供一个示例输入。顺便说一句,如果您有一个类似于:(title=1)之类的元组,您可以使用:tuple\u var\u name.title访问title的值更改示例输入,即将“”双引号替换为单(“”)引号。实际上,API响应还定义了一个根元素(“product”),我在request(post)response.ok中也更新了它。另外,如何检查字符串中的空/空白/空格(金额、日期、数量)并在进行类型转换时对其进行默认设置?它实际上是一个元组列表。因此,给出错误:-AttributeError:“tuple”对象没有属性“copy”。请建议请在你的问题中改变这一点,因为目前它是错误的。请提供一个示例输入。顺便说一句,如果您有一个类似于:(title=1)之类的元组,您可以使用:tuple\u var\u name.title访问title的值更改示例输入,即将“”双引号替换为单(“”)引号。实际上,API响应还定义了一个根元素(“产品”),我在请求(post)响应中也对其进行了更新。
[
{
"id": "123456",
"product": "XYZ",
"exp_date": 2020-03-01 00:00:00,
"amount": 30.5,
"qty": 1
},
{
"id": "789012",
"product": "ABC",
"exp_date": 2020-04-15 00:00:00,
"amount": 22.57,
"qty": 3
},
{
"id": "56789",
"product": "AAA",
"exp_date": 2020-03-29 00:00:00,
"amount": 0.0,
"qty": 0
}
]