Правильна відповідь у Вашому випадку отримує потрібний рядок безпосередньо, наприклад, використовуючи strftime () як @Pavel Karateev запропонував:
Або, якщо потрібні частки секунди:
Відповідь на питання в заголовку
Q: Зміна значень елементів рядка в циклі
Рядки незмінні (immutable) в Пітоні. Тому змінити рядок не можна, можна тільки нову створити і замінити стару рядок: s = create_new_string (s).
Марно привласнювати нове значення змінної циклу. Воно буде перезаписано на наступній ітерації. Якщо рішення не можна знайти використовуючи методи рядків (такі як .replace ()) або використовуючи регулярні вирази (re модуль), то варіант з перетворенням в список і використанням '' .join в кінці не так вже й поганий. Наприклад, щоб перетворити кожен n-ий символ в рядку в титульний (починаючи з одиниці), не використовуючи regex:
Щоб зробити кожен другий символ заголовним:
Зауваження по коду в питанні
- не потрібно використовувати; в кінці кожного рядка в Пітоні
- не потрібно поміщати import всередині функцій, якщо ви твердо не знаєте навіщо це потрібно. Поміщайте import нагорі вихідного коду модуля
- не використовуйте локальне час без вказівки тимчасової зони (часового поясу), за винятком випадку коли ви відразу відображаєте користувачеві це значення.
Якщо у вас є об'єкт, то намагайтеся використовувати його методи і атрибути, щоб отримати результат, а не маніпулювання його текстового подання. Наприклад: не потрібно викликати str (dtValue). а потім намагатися змінити цей рядок, щоб отримати потрібний формат (або гірше: намагатися перетворити цей рядок в будь-якій іншій об'єкт), краще відразу викличте dtValue.strftime (). використовуючи формат, наведений вище. Тобто не використовуйте:
Іноді це називають "Yo-Yo code" (назва від yoyo іграшки відбулося). Подібний код слід слід уникати. Замість цього робіть так:
Дотримуйтесь PEP-8 при створенні імен, якщо у вас немає переконливих причин цього не робити, наприклад використовуйте get_datetime_postfix () замість getDateTimePostfix () для імен функцій.