相关疑难解决方法(0)

如何克服"datetime.datetime而不是JSON可序列化"?

我有一个基本的词典如下:

sample = {}
sample['title'] = "String"
sample['somedate'] = somedatetimehere
Run Code Online (Sandbox Code Playgroud)

当我尝试做的时候,jsonify(sample)我得到:

TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000) is not JSON serializable

我能做些什么,以便我的字典样本可以克服上述错误?

注意:虽然它可能不相关,但字典是从mongodb中检索记录生成的,当我打印输出时str(sample['somedate']),输出是2012-08-08 21:46:24.862000.

python json

626
推荐指数
19
解决办法
44万
查看次数

如何将Python的.isoformat()字符串转换回datetime对象

因此在Python 3中,您可以使用.isoformat()生成ISO 8601日期,但是您无法将isoformat()创建的字符串转换回datetime对象,因为Python自己的日期时间指令不能正确匹配.也就是说,%z = 0500而不是05:00(由.isoformat()生成).

例如:

>>> strDate = d.isoformat()
>>> strDate
'2015-02-04T20:55:08.914461+00:00'

>>> objDate = datetime.strptime(strDate,"%Y-%m-%dT%H:%M:%S.%f%z")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\Lib\_strptime.py", line 500, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Python34\Lib\_strptime.py", line 337, in _strptime
    (data_string, format))
ValueError: time data '2015-02-04T20:55:08.914461+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Run Code Online (Sandbox Code Playgroud)

来自Python的strptime文档:(https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)

%z UTC格式+ HHMM或-HHMM中的UTC偏移量(如果对象是天真的,则为空字符串).(空),+ 0000,-0400,+ 1030

因此,简而言之,Python甚至不遵守自己的字符串格式化指令.

我知道日期时间在Python中已经很糟糕了,但这真的超出了不合理的范围,变成了愚蠢的土地.

告诉我这不是真的.

python datetime iso8601 rfc3339

75
推荐指数
2
解决办法
6万
查看次数

如何将字典记录到日志文件中?

我有一本字典:

 d = {name : "John", age: 10}. 
Run Code Online (Sandbox Code Playgroud)

并将日志文件设置为:

logging.basicConfig(level = logging.DEBUG, filename = "sample.log")
Run Code Online (Sandbox Code Playgroud)

是否可以将此字典记录到"sample.log"文件中?如果是,我该怎么办?

python logging python-2.7

10
推荐指数
3
解决办法
3万
查看次数

标签 统计

python ×3

datetime ×1

iso8601 ×1

json ×1

logging ×1

python-2.7 ×1

rfc3339 ×1