Преобразовать строку с множеством дат в datetime - PullRequest
0 голосов
/ 30 мая 2020

Если бы моя строка состояла только из одной даты, я бы использовал это:

datetime.datetime.strptime(string, '%b %d %Y').strftime('%Y-%m-%d')

Но, поскольку их много в строке, я не знаю, как действовать дальше. Как я мог прочитать строку и внести изменения только там, где это необходимо?

Итак, вот моя строка:

s = 'Mar 27 2000*56.75*58.39*Mar 26 2000*53.10*56.13*Mar 25 2000*51.50*52.00'

и то, что я ожидаю сразу после:

s = '2000-03-27*56.75*58.39*2000-03-26*53.10*56.13*2000-03-25*51.50*52.00'

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Если все строковые даты имеют один и тот же формат, вы можете использовать регулярное выражение для получения дат в строке, а затем заменить его. Я думаю о чем-то вроде этого:

import re
import datetime

def operate_on_replacement(matchObj):
    match = matchObj.group(0)
    return datetime.datetime.strptime(match, '%b %d %Y').strftime('%Y-%m-%d')

start_string = 'Mar 27 2000*56.75*58.39*Mar 26 2000*53.10*56.13*Mar 25 2000*51.50*52.00'
replaced_string = re.sub(r'\w{3}\s{1}\d{2}\s{1}\d{4}', operate_on_replacement, start_string)
0 голосов
/ 30 мая 2020

Вы можете сделать

new_s = s.split("*")

А затем использовать свой код в столбцах, которые отформатированы по дате и времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...