第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將具有日期時間值的字典的字符串表示形式轉(zhuǎn)換回字典

將具有日期時間值的字典的字符串表示形式轉(zhuǎn)換回字典

眼眸繁星 2021-07-16 17:05:41
我有一個字典的字符串表示。它是一個嵌套字典,甚至更復(fù)雜,其中的record_time鍵具有如下所示的日期時間值:d = """{    "motion_measure": {"INCAR": 69, "RANDOM": 63, "UNKNOWN": 62, "BIKING": 57, "WALKING": 48, "RUNNING": 41, "SEDENTARY": 0},    "samples": [0, 1.1791444, 11.036073],    "record_time": datetime.datetime(2018, 3, 26, 10, 3, 17, 441000)    }"""我嘗試了這個相關(guān)問題中建議的兩種方法:import astast.literal_eval(d)ast.literal_eval 不起作用,因為它無法處理日期時間值。import jsonjson.loads(d) json.loads 也不起作用,因為日期時間格式不可反序列化。有人知道使用 Python 將其轉(zhuǎn)換回 dict 或 json 的好方法嗎?我從 OrientDB 得到了這種奇怪的記錄格式。
查看完整描述

2 回答

?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

由于您的字符串幾乎是 json,您可以稍微清理一下并使用json.loads(并避免eval)。


例如,如果您可以將日期時間值轉(zhuǎn)換為列表,那么一種方法是datetime.datetime(...)在轉(zhuǎn)換為 dict 之前替換字符串中的所有實例(下面的示例使用正則表達式來處理替換)。然后,您可以使用datetime結(jié)果字典中的日期時間列表。


例如(在您的輸入字符串中添加一個額外的日期時間以確保替換處理多個日期時間出現(xiàn)和沒有指定毫秒的日期時間等):


import datetime

import re

import json


s = """{

    "motion_measure": {"INCAR": 69, "RANDOM": 63, "UNKNOWN": 62, "BIKING": 57, "WALKING": 48, "RUNNING": 41, "SEDENTARY": 0},

    "samples": [0, 1.1791444, 11.036073],

    "record_time": datetime.datetime(2018, 3, 26, 10, 3, 17, 441000), 

    "another_time": datetime.datetime(2017, 3, 26, 10, 3)

    }"""


# re.sub to replace datetime; json.loads to convert to dict

d = json.loads(re.sub(r'datetime\.datetime\(([^)]*)\)', r'[\1]', s))


# datetime.datetime(...) to work with resulting datetime lists

date1 = datetime.datetime(*d['record_time'])

date2 = datetime.datetime(*d['another_time'])


print(d)

# OUTPUT (shown on multiple lines for readability)

# {

# 'motion_measure': {'INCAR': 69, 'RANDOM': 63, 'UNKNOWN': 62, 'BIKING': 57, 'WALKING': 48, 'RUNNING': 41, 'SEDENTARY': 0},

# 'samples': [0, 1.1791444, 11.036073],

# 'record_time': [2018, 3, 26, 10, 3, 17, 441000],

# 'another_time': [2017, 3, 26, 10, 3]

# }


print(date1)

print(date2)

# OUTPUT

# 2018-03-26 10:03:17.441000

# 2017-03-26 10:03:00


查看完整回答
反對 回復(fù) 2021-07-21
  • 2 回答
  • 0 關(guān)注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號