【问题标题】:Convert "datetime.date(2019, 3, 21)" to "2019/03/21"将“datetime.date(2019, 3, 21)”转换为“2019/03/21”
【发布时间】:2019-12-12 16:48:42
【问题描述】:

我有一个列表,如下所示:

[['2019-001', datetime.date(2019, 3, 21), 'Services']]

我希望结果如下所示:

[['2019-001', '2019/03/21', 'Services']]

我需要遍历整个列表,因为我不知道所有这些日期时间条目的位置。我应该使用正则表达式,还是有更好/更快/更 Pythonic 的方式来做到这一点?

【问题讨论】:

    标签: python python-3.x list datetime nested-lists


    【解决方案1】:

    可能类似于以下内容,使用 list-comp 和 isinstance()?如果您不知道列表中的哪个元素将成为 datetime 对象,我们能做的最好的事情就是检查每个元素。

    >>> l = [['2019-001', datetime.date(2019, 3, 21), 'Services']]
    >>> [[x.strftime('%Y/%m/%d') if isinstance(x, datetime.date) else x for x in sl] for sl in l]
    [['2019-001', '2019/03/21', 'Services']]
    

    【讨论】:

    • @AlanW。基本上,在外部列表中,我们有“for sl in l”。这是我对“列表中的子列表”的简写。所以对于初始列表中的每个子列表,我们希望我们的新列表有一个子列表。在每个子列表中,我们要检查每个元素是否是日期对象,如果是,则使用 strftime 对其进行转换。否则,我们就保持原样。希望能有所帮助!
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2022-08-05
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多