Python strftime - дата без начального 0? - PullRequest
217 голосов
/ 25 мая 2009

При использовании Python strftime, есть ли способ удалить первые 0 даты, если она до 10-го числа, т.е. так 01 это 1? Не можете найти % вещь для этого?

Спасибо!

Ответы [ 17 ]

2 голосов
/ 17 ноября 2014

Основываясь на методе Алекса, это будет работать как в случае начала строки, так и после пробелов:

re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")

Мне нравится это лучше, чем .format или% -d, потому что это кроссплатформенный и позволяет мне продолжать использовать strftime (чтобы получить такие вещи, как "ноябрь" и "понедельник").

2 голосов
/ 20 июля 2010

Для %d вы можете преобразовать в целое число, используя int(), тогда оно автоматически удалит ведущий 0 и станет целым числом. Затем вы можете преобразовать обратно в строку, используя str().

1 голос
/ 02 февраля 2017
import datetime
now = datetime.datetime.now()
print now.strftime("%b %_d")
1 голос
/ 29 июля 2016

Старый вопрос, но% l (в нижнем регистре L) работал для меня в strftime: это может не сработать для всех, хотя, поскольку он не указан в документации по Python, которую я нашел

1 голос
/ 25 мая 2009

Поскольку Python на самом деле просто вызывает функцию языка C strftime(3) на вашей платформе, возможно, существуют символы формата, которые вы можете использовать для управления лидирующим нулем; попробуйте man strftime и посмотрите. Но, конечно, результат не будет переносимым, как вам напомнит руководство по Python. : -)

Вместо этого я бы попытался использовать объект datetime нового стиля, который имеет атрибуты, такие как t.year и t.month и t.day, и поставить их через обычное мощное форматирование оператора % , который поддерживает контроль ведущих нулей. Подробнее см. http://docs.python.org/library/datetime.html. Еще лучше, используйте оператор "".format(), если он у вас есть в Python, и будьте еще более современными; у этого есть много вариантов формата для чисел также. Смотри: http://docs.python.org/library/string.html#string-formatting.

0 голосов
/ 19 августа 2018

%d поддерживает оба (ведущий ноль и без него) в Python 3.6.5 (и, надеюсь, в последующих версиях)

enter image description here

0 голосов
/ 18 апреля 2018

с использованием, например, «% -d» не переносимо даже между разными версиями одной и той же ОС. Лучшим решением было бы извлекать компоненты даты по отдельности и выбирать между операторами форматирования для конкретной даты и доступом к атрибутам даты для каждого компонента.

e = datetime.date(2014, 1, 6)
"{date:%A} {date.day} {date:%B}{date.year}".format(date=e)
...