#python #python-3.x #string #date
#python #python-3.x #строка #Дата
Вопрос:
В настоящее время я изучаю форматирование строки Python. Я столкнулся с проблемой
У меня есть строка
s = "25Aug20"
Я хочу получить дату, месяц и год отдельно
sp_list = ['25', 'Aug', '20']
Ответ №1:
Вы можете использовать нарезку:
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
Комментарии:
1. Можете ли вы помочь мне преобразовать ее в 25-08-2020?
2. Если вы хотите получить форматированную строку (т. Е.
"25-08-2020"
), Используйтеmydatetime.strftime("%d-%m-%Y")
.
Ответ №2:
Вы можете использовать нарезку, как уже упоминалось в другом ответе, но я добавлю, что если есть какая-либо возможность, что вам также может потребоваться обрабатывать строки, которые используют только один символ при работе с однозначными датами, например, '5Aug20'
(вместо '05Aug20'
или ' 5Aug20'
), тогда я предлагаю нарезать относительно конца строки, чтобы обеспечить допуск к этому:
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:
Вы можете добиться этого без использования 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']