#python #datetime
Вопрос:
Я написал сценарий для получения данных из Twitter, теперь я занимаюсь разделением столбцов, я хочу, чтобы дата и время были в отдельных столбцах.
Я получаю такую дату, как: Ср. 20 октября 16:42:04 0000 2021
Я делаю это с помощью следующего кода:
filtered_data['date'] = tweet['created_at']
Затем я хочу преобразовать эту дату во время получения в два поля с использованием даты и времени
date_formats = '%d-%m-%Y'
time_formats = '%H:%M:%S'
На момент подачи заявления:
filtered_data['date'] = datetime.strptime(tweet['created_at'], date_formats)
Я получаю следующую ошибку:
time data 'Wed Oct 20 16:42:04 0000 2021' does not match format '%d-%m-%Y'
Скажите мне, как я могу осуществить эту трансформацию и возможно ли это вообще
Ответ №1:
Если вам нужен объект datetime:
подаренный
tweet['created_at'] = 'Wed Oct 20 16:42:04 0000 2021'
использовать
input_format = '%a %b %d %H:%M:%S %z %Y'
filtered_data['date'] = datetime.strptime(
tweet['created_at'],
input_format)
результаты в
>>> filtered_data['date']
datetime(2021, 10, 20, 16, 42, 4, tzinfo=datetime.timezone.utc)
Если вам нужна отформатированная строка в виде '%d-%m-%Y'
:
подаренный
tweet['created_at'] = 'Wed Oct 20 16:42:04 0000 2021'
использовать
input_format = '%a %b %d %H:%M:%S %z %Y'
output_format = '%d-%m-%Y'
filtered_data['date'] = datetime.strptime(
tweet['created_at'],
input_format).strftime(output_format)
результаты в
>>> filtered_data['date']
'20-10-2021'
Ссылка
Ответ №2:
Сначала вам нужно использовать текущий формат. См. Пример:
from datetime import datetime
my_date = 'Wed Oct 20 16:42:04 0000 2021'
initial_format = '%a %b %d %H:%M:%S %z %Y'
final_format = '%d-%m-%Y'
new_date = datetime.strptime(my_date, initial_format).strftime(final_format)
print(new_date)
Выход:
20-10-2021
Так что в вашем случае попробуйте:
filtered_data['date'] = datetime.strptime(tweet['created_at'], '%a %b %d %H:%M:%S %z %Y').strftime(date_formats)
Комментарии:
1. спасибо) Все работает