【问题标题】:Properly format extracted date time with python [closed]使用python正确格式化提取的日期时间[关闭]
【发布时间】:2019-03-03 15:11:19
【问题描述】:

我有以下代码:

print a.split('/',1)

返回['27', '09/2018']

我需要将提取的日期时间格式化为27/09

【问题讨论】:

  • 什么是a?你能解释更多吗?您可能不需要额外的参数作为 1
  • 它只是一个参数。反正我不需要那个。我更关心得到输出。

标签: python


【解决方案1】:

您可以使用re 模块,而无需通过拆分值创建新列表

import re
a = "27/09/2018"
re.sub('/\d{4}$','',a)

使用datetime

import datetime
date=datetime.datetime.strptime(a,'%d/%m/%Y')
print('{}/{}'.format(date.day,date.month))

使用rsplit

a = "27/09/2018"
a.rsplit('/',1)[0] # 1 is max_splits param

【讨论】:

  • 我喜欢你的建议 re 和/或 datetime @mad_ 我很少考虑到这一点。与我的答案相比,这在内存使用方面是否更快甚至值得?您还可以解释一下 re 或 datetime 到底在做什么,或者包含这些使用示例的链接吗?
  • 是的,因为这些方法不会创建一个新列表,否则它将由split 创建。 split 解决方案更具可读性,但我认为 datetime 解决方案将开辟新的方法来处理月份和日期,比如如果你想找到日期差异。我个人尽可能避免分裂。 @Jaba 也包含了链接
  • 分割速度慢吗?或者这只是为了更动态的使用?
  • 更大的字符串样本可以看到性能差异,但肯定会增加空间复杂度。
  • @mad_ 这很好用。谢谢。我需要将结果 27/09 转换为 int 数据类型,但我收到一个错误 - int() 以 10 为底的无效文字。我有以下代码: int(a.rsplit('/',1)[0] )
【解决方案2】:

看来您最后正在寻找一个字符串。您可能正在寻找这个:

a = "27/09/2018"
a = a.split('/')

这将使alist 等于:['27', '09', '2018']。为了以您正在寻找的格式打印,请使用以下内容:

print "{}/{}".format(a[0], a[1])

或者这个:

print a[0] + '/' + a[1]

【讨论】:

  • 您可以包含由于与 max_splits 相关的额外参数而导致 OP 解决方案失败的原因
【解决方案3】:

你可以的

tokens = a.split("/")
print(tokens[0] + "/" + tokens[1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多