Python добавляет дефис к дате вывода из API - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь загрузить данные о запасах, используя API, и чтобы API работал, мне нужно запросить дату в формате ГГГГММДД, однако мне бы хотелось, чтобы она вывела ГГГГ-ММ-ДД.

В настоящее время я использую этот код для запроса данных:

write(symbol, ";", exchange, ";", bar.date.replace(' ', '; '), ";", bar.open, ";", bar.high, ";", bar.low, ";", bar.close, ";", bar.volume)

Поскольку API дает мне вывод: «ГГГГММДД ЧЧ: ММ: СС», я уже использовал команду .replace ('', '; '), чтобы поставить точку с запятой после даты.Теперь я также хотел бы отформатировать вывод даты в YYYY-MM-DD, но я думаю, что, поскольку я использую .replace, я не могу найти способ разрешить эту работу сам.

Может ли кто-нибудь здесь помочьменя нет?

Ответы [ 4 ]

3 голосов
/ 22 мая 2019

Я не знаю, почему другие ответы предлагают регулярное выражение, когда у нас есть модуль datetime для этого.Используйте strptime, чтобы преобразовать произвольную строку в дату и время, а затем преобразовать обратно в строку с strftime.Параметры формата указаны внизу документа: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

import datetime as dt

date = '20190522 20:00:24'
new_date = dt.datetime.strptime(date, '%Y%m%d %H:%M:%S').strftime('%Y-%m-%d')
2 голосов
/ 22 мая 2019

Нет необходимости в регулярных выражениях или замене строк. Просто используйте встроенный модуль datetime.

from datetime import datetime

bar.date.strftime(“%Y-%B-%d”)
0 голосов
/ 22 мая 2019

Быстрый способ с использованием regex:

import re
a='20180230;HHMMSS'
re.sub(r'(\d{4})(\d{2})(\d{2}).*',r'\1-\2-\3',a)

Выход:

'2018-02-30'

Код находит 4 числа в строке, затем два числа в строке, а затем два других числа в строке и ставит между этими двумя группами дефис. Затем он игнорирует что-либо после этих трех групп.

0 голосов
/ 22 мая 2019

Вы можете преобразовать строку в список символов.Затем вставьте дефисы в нужные индексы:

date = list(bar.date.replace(' ', ';'))
date.insert(4, '-')
date.insert(7, '-')  # not 6 as the first hyphen shifts them up
write(symbol, ";", exchange, ";",
      ''.join(date),
      ";", bar.open, ";", bar.high,
      ";", bar.low, ";", bar.close,
      ";", bar.volume)

Все это предполагает, что формат даты всегда гарантированно будет в одном и том же формате.

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