Проблема с python3 datetime

#python-3.x

#python-3.x

Вопрос:

Я пытаюсь преобразовать формат даты США в формат даты ЕС. Это часть задания, и преподаватель дал нам тестовый файл для проверки наших ответов.

Я могу напечатать правильную дату, но я получаю ошибку при тестировании.

Это то, что у меня есть:

 def US_to_EU(date):
    df = [date]
    f = [datetime.strptime(d, "%m/%d/%y").strftime("%d.%m.%y") for d in df]
    return(f)

US_to_EU('3/13/18')
  

Это то, что я получаю при печати результатов:

 ['13.03.18']
  

Мне нужно, чтобы он вернул:

 '13.03.18'
  

Это то, что говорит мне тест, который я запускаю:

 FAIL: test_US_to_EU (__main__.TestStrings)
  ----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/john/Desktop/John's School/Spring 2019/ISTA 130 Srping 2019/HW/HW 5/test_strings.py", line 12, in test_US_to_EU
self.assertEqual('12.3.18', US_to_EU('3/12/18'))
AssertionError: '12.3.18' != None
  

Кто-нибудь может мне помочь с этим? Я знаю, что это, вероятно, самая простая вещь на свете, но я уже 9 недель новичок в этом деле и все еще новичок.

Ответ №1:

Возможно, вместо того, чтобы писать:

 f = [datetime.strptime(d, "%m/%d/%y").strftime("%d.%m.%y") for d in df]
  

вы должны написать:

 f = [datetime.strptime(d, "%m/%d/%y").strftime("%d.%m.%y") for d in df][0]
  

Или, что еще лучше, не оборачивайте строку массивом. Итак, ваш код будет выглядеть следующим образом:

 def US_to_EU(date):
    f = datetime.strptime(date, "%m/%d/%y").strftime("%d.%m.%y")
    return(f)

US_to_EU('3/13/18')
  

Это вернет '13.03.18' .