【问题标题】:Date String Formatting In PythonPython中的日期字符串格式
【发布时间】:2020-09-08 04:58:36
【问题描述】:

我目前正在研究 Python 字符串格式化。我遇到了一个问题

我有一个字符串

s = "25Aug20"

我想分别获取日期月份和年份

sp_list = ['25', 'Aug', '20']

【问题讨论】:

    标签: python python-3.x string date


    【解决方案1】:

    你可以使用slicing:

    sp_list = [s[:2], s[2:5], s[5:]]
    

    如果你想得到一个实际的datetime 对象,请使用.strptime()

    from datetime import datetime
    
    s = "25Aug20"
    print(datetime.strptime(s, "%d%b%y"))
    

    这将打印出来

    2020-08-25 00:00:00
    

    【讨论】:

    • 你能帮我把它转换成 25-08-2020 吗?
    • 如果你想得到一个格式化的字符串(即"25-08-2020")使用mydatetime.strftime("%d-%m-%Y")
    【解决方案2】:

    您可以使用切片,正如另一个答案中已经提到的那样,但我会补充一点,如果在处理一位数日期时您可能还需要处理仅使用单个字符的字符串,例如'5Aug20'(而不是 '05Aug20'' 5Aug20'),那么我建议相对于字符串的 end 进行切片以允许对此进行容忍:

    sp_list = [s[:-5], s[-5:-2], s[-2:]]
    

    只要年份使用的字符数始终为 2,月份使用的字符数始终为 3,这应该始终有效。

    【讨论】:

      【解决方案3】:

      你也可以使用正则表达式

      例如:

      import re
      
      s="25Aug20"
      print(re.match(r"(\d+)([A-Za-z]+)(\d+)", s).groups())
      # -->('25', 'Aug', '20')
      

      【讨论】:

        【解决方案4】:

        您可以在不使用datetimeslicing 的情况下实现此目的

        s = "25Aug20"
        
        month = ''.join(char for char in s if char.isalpha())
        res = s.replace(month, f' {month} ').split()
        print(res)
        

        输出:

        ['25', 'Aug', '20']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-09
          • 2022-01-13
          相关资源
          最近更新 更多