python ast.literal_eval and datetime

后端 未结 6 1333
终归单人心
终归单人心 2020-12-09 18:26

I have a string \"{\'datetime\': datetime.datetime(2010, 11, 21, 0, 56, 58)}\" and I want to convert this to the object it represents. Using ast.literal_

6条回答
  •  一向
    一向 (楼主)
    2020-12-09 19:10

    Use repr(datetime.datetime.utcnow()) to save in your dict or your file. Look,

    >>> import datetime
    >>> oarg = datetime.datetime.utcnow()
    >>> oarg
    datetime.datetime(2013, 2, 6, 12, 39, 51, 709024)
    >>> butiwantthis = repr(oarg)
    >>> butiwantthis
    'datetime.datetime(2013, 2, 6, 12, 39, 51, 709024)'
    >>> eval(oarg)
    Traceback (most recent call last):
      File "", line 1, in 
    TypeError: eval() arg 1 must be a string, bytes or code object
    >>> eval(butiwantthis)
    datetime.datetime(2013, 2, 6, 12, 39, 51, 709024)
    

    Cool! eval() works!

    Take care with import

    >>> from datetime import datetime, date, time
    >>> oarg = datetime.datetime.utcnow()
    Traceback (most recent call last):
      File "", line 1, in 
    AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
    >>> oarg = datetime.utcnow()
    >>> oarg
    datetime.datetime(2013, 2, 6, 12, 41, 51, 870458)
    >>> butiwantthis = repr(oarg)
    >>> butiwantthis
    'datetime.datetime(2013, 2, 6, 12, 41, 51, 870458)'
    >>> eval(butiwantthis)
    Traceback (most recent call last):
      File "", line 1, in 
      File "", line 1, in 
    AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
    >>> # wrong import
    

    Perfect!

    Ps: Python3.3

提交回复
热议问题