【发布时间】:2020-09-08 04:58:36
【问题描述】:
我目前正在研究 Python 字符串格式化。我遇到了一个问题
我有一个字符串
s = "25Aug20"
我想分别获取日期月份和年份
sp_list = ['25', 'Aug', '20']
【问题讨论】:
标签: python python-3.x string date
我目前正在研究 Python 字符串格式化。我遇到了一个问题
我有一个字符串
s = "25Aug20"
我想分别获取日期月份和年份
sp_list = ['25', 'Aug', '20']
【问题讨论】:
标签: python python-3.x string date
你可以使用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")使用mydatetime.strftime("%d-%m-%Y")。
您可以使用切片,正如另一个答案中已经提到的那样,但我会补充一点,如果在处理一位数日期时您可能还需要处理仅使用单个字符的字符串,例如'5Aug20'(而不是 '05Aug20' 或 ' 5Aug20'),那么我建议相对于字符串的 end 进行切片以允许对此进行容忍:
sp_list = [s[:-5], s[-5:-2], s[-2:]]
只要年份使用的字符数始终为 2,月份使用的字符数始终为 3,这应该始终有效。
【讨论】:
你也可以使用正则表达式
例如:
import re
s="25Aug20"
print(re.match(r"(\d+)([A-Za-z]+)(\d+)", s).groups())
# -->('25', 'Aug', '20')
【讨论】:
您可以在不使用datetime 和slicing 的情况下实现此目的
s = "25Aug20"
month = ''.join(char for char in s if char.isalpha())
res = s.replace(month, f' {month} ').split()
print(res)
输出:
['25', 'Aug', '20']
【讨论】: