Python: изменить список дат с DDMM на DD-MM - PullRequest
0 голосов
/ 04 мая 2020

У меня есть список дат, например:

dates = 1104, 1504, 1704, 2204

Как мне преобразовать его в

dates = 11-04, 15-04, 17-04, 22-04

с помощью для l oop?

Я знаю, как добавить больше символов в конец каждого элемента. Просто не уверен, как добавить его в середину. Я использую python 3.x

Ответы [ 3 ]

4 голосов
/ 04 мая 2020

Во-первых, вам нужно преобразовать все даты в строки (если они уже являются строками, вы можете пропустить этот шаг):

dates = [1104, 1504, 1704, 2204]
dates = list(map(str, dates))

Вы также можете перебирать список дат и делать их каждое в строки по отдельности, но таким образом все это делается за один раз go.

Далее необходимо выполнить итерацию по списку и добавить дефис в середине каждой строки даты, а затем добавить новую строку в список , Вы вставляете дефис, отделяя строку и затем создавая новую строку.

datesSeparated = []
for i in dates:
    date = i[:2] + "-" + i[2:]
    datesSeparated.append(date)

Вы также можете сделать это, используя понимание списка, если это больше ваш стиль:

datesSeparated = [i[:2] + "-" + i[2:] for i in dates]
2 голосов
/ 04 мая 2020

Нарезка в удобочитаемом виде

dates = ["1104", "1504", "1704", "2204"]
new_dates = [date[:2] + "-" + date[2:] for date in dates]
print(new_dates)

['11-04', '15 -04 ', '17 -04', '22 -04 ']

2 голосов
/ 04 мая 2020

Я не думаю, что вам нужно datetime для этой простой задачи.

Вы можете использовать разрезание строк здесь, чтобы вернуть кортеж строк в формате "DD-MM". Вы можете нарезать все до 2-го символа (но не включая) с помощью [:2], а все после второго символа с помощью [2:]. Тогда вы можете просто положить да sh "-" между ломтиками.

>>> dates = 1104, 1504, 1704, 2204
>>> tuple(f"{x[:2]}-{x[2:]}" for x in map(str, dates))
('11-04', '15-04', '17-04', '22-04')

Я вернул tuple, поскольку dates - это тот тип. Я также преобразовал целые числа из dates в str, используя map, так как вы не можете разрезать целые числа. Вы также можете использовать f-строки для форматирования срезов в формате "DD-MM".

Также я предполагаю, что вы хотели, чтобы ожидаемый результат представлял собой кортеж строк, поскольку один dates = 11-04, 15-04, 17-04, 22-04 был бы недействительным.

Обновление

Если вы хотите извлечь даты из input(), вы передаете входные данные, разделенные ",", чтобы разделить их на список строк:

>>> dates = input()
1104, 1504, 1704, 2204
>>> dates
'1104, 1504, 1704, 2204'
>>> tuple(f"{x[:2]}-{x[2:]}" for x in map(str.strip, dates.split(",")))
('11-04', '15-04', '17-04', '22-04')

Что также удаляет оставшиеся пробелы с str.strip, поскольку входные данные могут быть 1104, 1504, 1704, 2204, 1104,1504,1704,2204, 1104, 1504,1704, 2204 и c. Гораздо проще просто разделить на ",", а затем убрать пробелы.

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