Правильный ответ в Вашем случае получает нужную строку напрямую, например, как :
#!/usr/bin/env pythonimport timeprint(time.strftime('%Y-%m-%d %H.%M.%S'))
Или, если нужны доли секунды:
#!/usr/bin/env pythonfrom datetime import datetimeprint(datetime.now().strftime('%Y-%m-%d %H.%M.%S.%f'))
Ответ на вопрос в заголовке
Q: Изменение значений элементов строки в цикле
Строки неизменяемы (immutable) в Питоне. Поэтому изменить строку нельзя, можно только новую создать и заменить старую строчку: s = create_new_string(s).
Бесполезно присваивать новое значение переменной цикла. Оно будет перезаписано на следующей итерации. Если решение нельзя найти используя методы строк (такие как .replace()) или используя регулярные выражения (re модуль), то вариант с преобразованием в список и использованием ''.join в конце не так уж и плох. Например, чтобы преобразовать каждый n-ый символ в строке в заглавный (начиная с единички), не используя regex:
def upper_every_nth(string, n): chars = [char if i % n else char.upper() for i, char in enumerate(string, start=1)] retu type(string)().join(chars)
Чтобы сделать каждый второй символ заглавным:
>>> upper_every_nth('abcde', 2)'aBcDe'
Замечания по коду в вопросе
- не нужно использовать
; в конце каждой строки в Питоне - не нужно помещать
import внутри функций, если вы твёрдо не знаете зачем это нужно. Помещайте import наверху исходного кода модуля - не используйте локальное время без указания временной зоны (часового пояса), за исключением случая когда вы сразу отображаете пользователю это значение.
Если у вас есть объект, то старайтесь использовать его методы и атрибуты, чтобы получить результат, а не манипулирование его текстового представления. Например: не нужно вызывать str(dtValue), а потом пытаться изменить эту строку, чтобы получить нужный формат (или хуже: пытаться преобразовать эту строку в какой-либо другой объект), лучше сразу вызовите dtValue.strftime(), используя формат, приведённый выше. То есть не используйте:
# XXX НЕ ДЕЛАЙТЕ ЭТОГОобъект -> его строковое представление -> какие-то строковые манипуляции -> попытка распознать получившуюся строку, чтобы создать новый объект
Иногда это называют (название от ). Подобный код следует следует избегать. Вместо этого делайте так:
объект -> код, который использует методы, атрибуты объекта, чтобы создать новый объект напрямую
Следуйте при создании имён, если у вас нет убедительных причин этого не делать, например используйте get_datetime_postfix() вместо getDateTimePostfix() для имён функций.