呼如林
由于您的字符串几乎是 json,您可以稍微清理一下并使用json.loads(并避免eval)。例如,如果您可以将日期时间值转换为列表,那么一种方法是datetime.datetime(...)在转换为 dict 之前替换字符串中的所有实例(下面的示例使用正则表达式来处理替换)。然后,您可以使用datetime结果字典中的日期时间列表。例如(在您的输入字符串中添加一个额外的日期时间以确保替换处理多个日期时间出现和没有指定毫秒的日期时间等):import datetimeimport reimport jsons = """{ "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 dictd = json.loads(re.sub(r'datetime\.datetime\(([^)]*)\)', r'[\1]', s))# datetime.datetime(...) to work with resulting datetime listsdate1 = 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