PyMongo-Python列表到MongoDB数据类型的转换

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

我从以下请求中获得字符串格式的json响应:

results = requests.request("POST", url, data=json.dumps(payload), headers=header).json()['product']
样本输出: 打印(结果)-对象类型=

首先需要将所有这些字段转换为特定的数据类型,然后作为文档插入MongoDB

  • exp_date to日期/时间
  • 金额为浮动()
  • 数量到int()
  • 进行数据类型转换的有效方法是什么

    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
    }
    ]