@yazux

Как получить месяц в именительном падеже на питоне?

Делаю так:
import locale
locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')

myDate = datetime.today()
myMonth = myDate.strftime('%B')

получаю: "мая".
Нужно получить: "май".

Во всем примерах, что смог найти делают таким же образом и получают "май".
Помогите пожалуйста, не ругайте сильно, только второй день пишу на питоне.
  • Вопрос задан
  • 5724 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Python
software engineer
Падежей в питоне нет. Есть просто название месяца и аббревиатура (3 буквы).
Хотите в падеже - создайте свой массив с названиями месяца во всех нужных падежах, и используйте номер месяца в качестве индекса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Santer1986
вот попробуйте, хотя на маке может и не получиться.

import locale
import time

locale.setlocale(locale.LC_TIME, "ru_RU")

formatted_date = time.strftime("%B", time.localtime())

print(formatted_date)

у меня как раз аналогичная проблема, только наоборот надо не август, а августа
спасибо за код))
Ответ написан
Комментировать
ErgoZru
@ErgoZru
Есть неплохая библиотека для питона - pymorphy3, которая умеет в морфологию. Это форк pymorphy2 но который умеет работать на Python 3.11-3.12

from datetime import datetime
import locale
import sys
# для преобразования слов
import pymorphy3

# устанавливаем русскоязычный формат даты и времени
if sys.platform == 'win32':
    locale.setlocale(locale.LC_TIME, 'rus_rus')
else:
    locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')

# инициализируем парсер для разбора слов
morph = pymorphy3.MorphAnalyzer(lang='ru')

currentDate = datetime.now()
morphedMonth = morph.parse(currentDate.strftime('%B'))[0].normal_form.title()

print("Дата: {0} {1}г".format(morphedMonth, currentDate.strftime('%Y')))


Данный код выведет:

Дата: Июль 2024г


Для установки пакета команда:

pip3 install -U pymorphy3
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы