Borax — python 农历 & 节日工具库 — 中文数字 / 设计模式 / 树形结构
Обзор
GitHub: https://github.com/kinegratii/borax Gitee: https://gitee.com/kinegratii/borax
Borax представляет собой набор инструментов на Python 3, включающий в себя следующие темы:
Тема (Topics) | Содержание |
---|---|
Borax.LunarDate | Библиотека дат китайского сельскохозяйственного календаря за 1900–2100 годы |
Borax.Festivals | Инструменты для популярных праздников (по григорианскому и сельскохозяйственному календарю, по неделям, по сезонам) |
Borax.Choices | Декларативный класс опций. Подходит для Django.models.choices |
Borax.Datasets | Библиотека для работы с данными, включая объединение (Join), выбор столбцов (fetch) и т. д. |
Borax.DataStuctures | Деревья, JSON-данные |
Borax.Numbers | Библиотека чисел. Включает китайские цифры, проценты и т. п. |
Borax.Patterns | Шаблоны проектирования. Включают одиночный элемент, прокси-объект, отложенный объект |
Установка
Требования к версии Python для Borax:
Версия borax | Версия Python | Состояние поддержки |
---|---|---|
4.1.x | 3.9+ | Поддерживается в разработке |
4.0.0 | 3.7+ | Поддержка до 31 декабря 2024 года |
3.x | 3.5+ | Не поддерживается |
Можно установить через pip:
$ pip install borax
Версия
Версии Borax соответствуют семантическому управлению версиями (Semantic Versioning). Формат версии: <основная версия>.<дополнительная версия>.<версия исправления>
. Рекомендуется использовать следующий способ определения зависимостей от версий Borax:
borax~=4.1
Использование
Поддерживает даты сельскохозяйственного календаря с 1900 по 2100 год.
Данные и алгоритмы этого модуля основаны на проекте jjonline/calendar.js, некоторые данные и алгоритмы были изменены.
Создание дат и расчёт дат
from datetime import timedelta
from borax.calendars import LunarDate
# Получить сегодняшнюю дату по сельскохозяйственному календарю (сельскохозяйственный календарь 2018 года, 7 месяц, 1 день)
print(LunarDate.today()) # LunarDate(2018, 7, 1, 0)
# Преобразовать дату по григорианскому календарю в дату по сельскохозяйственному календарю
ld = LunarDate.from_solar_date(2018, 8, 11)
print(ld) # LunarDate(2018, 7, 1, 0)
# Расчёт даты, возврат даты через 10 дней
print(ld.after(10)) # LunarDate(2018, 7, 11, 0)
# Можно напрямую складывать и вычитать с datetime.timedelta
print(ld + timedelta(days=10)) # LunarDate(2018, 7, 11, 0)
Форматирование строк
today = LunarDate.today()
print(today.strftime('%Y年%L%M月%D')) # '2018年六月廿六'
print(today.strftime('今天的干支表示法为:%G')) # '今天的干支表示法为:戊戌年庚申月辛未日'
Создать объект праздника Весеннего фестиваля (каждый год 1 января по сельскохозяйственному календарю)
from borax.calendars.festivals2 import LunarFestival
festival = LunarFestival(month=1, day=1)
print(festival.description) # 'Каждый год 1 января по сельскохозяйственному календарю'
# Следующая дата Весеннего фестиваля и количество дней до неё
print(festival.countdown()) # (273, <WrappedDate:2022-02-01(二〇二二年正月初一)>)
# Следующие 5 дат Весеннего фестиваля ['2022-02-01(二〈二二年正月初一)', '2023-01-22(二〈三年正月初一)', '2024-02-10(二〈四年正月初一)', '2025-01-29(二〈五年正月初一)', '2026-02-17(二〈六年正月初一)']
print([str(wd) for wd in festival.list_days(start_date=date.today(), count=5)])
Праздник | Представление | Нормализованное описание |
---|---|---|
Новый год | SolarFestival(месяц=1, день=1) | Каждый год 1 января |
Осенний фестиваль | LunarFestival(месяц=8, день=15) | Каждый год 15 августа |
День матери (каждое второе воскресенье мая) | WeekFestival(месяц=5, index=2, week=calendar.SUNDAY) | Каждое второе воскресенье мая |
Канун Нового года | LunarFestival(день=-1) | Последний день каждого года |
Международный день программиста | SolarFestival(freq=FreqConst.YEARLY, день=256) | 256-й день каждого года |
Цинмин | TemFestival(name="清明") | Цинмин |
Каждый 5-й день месяца | SolarFestival(freq=FreqConst.MONTHLY, день=5) | Пятый день каждого месяца |
Всемирный день борьбы с малярией | WeekFestival(месяц=1, index=-1, неделя=calendar.SUNDAY) | Первое воскресенье января |
Последний выходной каждого месяца | WeekFestival(месяц=0, индекс=-1, | Последний выходной каждого месяца Борэкс. Фестиваль Лайбрари: встроенная библиотека праздников |
Основные примеры использования:
from datetime import date
from borax.calendars.festivals2 import FestivalLibrary, WrappedDate
library = FestivalLibrary.load_builtin()
# 2020 год, китайский национальный день и праздник середины осени приходятся на один и тот же день
names = library.get_festival_names(date(2020, 10, 1))
print(names) # ['китайский национальный день', 'праздник середины осени']
# 2021 год, праздник Цисицзе
festival = library.get_festival('Цисицзе')
print(festival.description) # 'по лунному календарю каждый год седьмой день седьмого месяца'
print(WrappedDate(festival.at(year=2021))) # '2021-08-14(две тысячи двадцать первый год седьмой месяц седьмой день)'
Вычисление праздника и количества дней между ним и текущей датой (4 мая 2021 года):
from borax.calendars.festivals2 import FestivalLibrary
library = FestivalLibrary.load_builtin()
for ndays, wd, festival in library.list_days_in_countdown(countdown=365):
print(f'{ndays:>3d} {wd} {festival.name}')
Результат:
0 2022-05-04(четвёртый месяц четвёртый день) китайский национальный день
4 2022-05-08(четвёртый месяц восьмой день) день матери
8 2022-05-12(четвёртый месяц двенадцатый день) день медсестры
...
332 2023-04-01(високосный второй месяц одиннадцатый день) праздник дурака
336 2023-04-05(високосный второй месяц пятнадцатый день) чистый свет
362 2023-05-01(третий месяц двенадцатый день) международный день труда
Борэкс. Нумбэрс: обработка китайских цифр
Различные формы китайских цифр:
from borax.numbers import ChineseNumbers
# строчные буквы, меры
print(ChineseNumbers.measure_number(204)) # 'двести четыре'
# строчные буквы, номера
print(ChineseNumbers.order_number(204)) # 'двести ноль четыре'
# заглавные буквы, меры
print(ChineseNumbers.measure_number(204, upper=True)) # 'две сотни ноль четыре'
# заглавные буквы, номера
print(ChineseNumbers.order_number(204, upper=True)) # 'две сотни нольчетыре'
Финансовые суммы:
import decimal
from borax.numbers import FinanceNumbers
decimal.getcontext().prec = 2
print(FinanceNumbers.to_capital_str(100000000)) # 'сто миллионов юаней'
print(FinanceNumbers.to_capital_str(4578442.23)) # 'четыре миллиона пятьсот семьдесят восемь тысяч четыреста сорок два юаня двадцать три'
print(FinanceNumbers.to_capital_str(107000.53)) # 'один миллион семьдесят тысяч пятьдесят три'
print(FinanceNumbers.to_capital_str(decimal.Decimal(4.50))) # 'четыре юаня пятьдесят'
Дополнительные функции модуля см. в документации.
Документация создана с помощью Material for MkDocs, также используется docsify для резервной документации.
С 2024 года, только Read the Docs будет использоваться в качестве источника документации.
Источник | Веб-сайт |
---|---|
read-the-docs | https://borax.readthedocs.io/zh_CN/latest/ |
github (больше не используется) | https://kinegratii.github.io/borax |
gitee (больше не используется) | https://kinegratii.gitee.io/borax |
Начиная с версии 4.1.0, borax использует pyproject.toml в качестве файла конфигурации для сборки проекта и использует следующую команду для создания пакета выпуска wheel.
python -m build -w
The MIT License (MIT)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )