Module for converting russian cost to string
Project description
Описание модуля russian_cost
Оглавление
- Общая информация
- Помещение данных в класс и их вывод
- Формат вывода данных
- Пример использования в шаблонизаторах
Общая информация
Модуль russian_cost служит для преобразования стоимости в строку с использованием различных форматов вывода. Например:
Исходные данные | Вывод |
---|---|
-0.11 | - 11 копеек |
-0.11 | минус одиннадцать копеек |
0.72 | семьдесят две копейки |
100020 | сто тысяч двадцать рублей |
1.12 | один рубль 12 копеек |
23.12 | двадцать три рубля 12 копеек |
Помещение данных в класс и их вывод
Предположим что у вас есть число, которое нужно преобразовать в стоимость:
from russian_cost import RussianCost
cost = RussianCost(-4.24)
print(cost)
# минус четыре рубля двадцать четыре копейки
Первым аргументов в конструктор класса передается сама стоимость, вторым аргументом передается формат вывода стоимости, по умолчанию он %S %R %P
. Стоимость и формат вывода можно указывать при инициализации экземпляра класса:
from pprint import pprint
from russian_cost import RussianCost
cost = [
RussianCost(-4.24),
RussianCost(-999.1, out_format='%s %R %p'),
RussianCost(-43.23, out_format='%s %r %p'),
RussianCost(-43.23, out_format='%S %R и на сдачу %p'),
RussianCost(0.23, out_format='Ваша сдача %p'),
]
pprint(cost)
# [минус четыре рубля двадцать четыре копейки,
# - девятьсот девяносто девять рублей 10 копеек,
# - 43 рубля 23 копейки,
# минус сорок три рубля и на сдачу 23 копейки,
# Ваша сдача 23 копейки]
Так и после объявления экземпляра класса:
from russian_cost import RussianCost
cost = RussianCost(-4.24)
print(cost)
# минус четыре рубля двадцать четыре копейки
cost.out_format = '%s %R %p'
print(cost)
# - четыре рубля 24 копейки
cost.cost = 34353.1
print(cost)
# тридцать четыре тысячи триста пятьдесят три рубля 10 копеек
cost.out_format = 'Ваша сдача %p (%P)'
print(cost)
# Ваша сдача 10 копеек (десять копеек)
Так же класс RussianCost
поддерживает метод strfcost
, который позволяет вывести стоимость в нужном формате, без изменения формата ввода класса out_format
:
from russian_cost import RussianCost
cost = RussianCost(-4.24)
print(cost)
# минус четыре рубля двадцать четыре копейки
print(cost.strfcost('%s %R %p'))
# - четыре рубля 24 копейки
Формат вывода данных
Директива | Значение | Пример |
---|---|---|
%S | Знак в текстовом виде | минус |
%s | Знак в символьном виде | - |
%R | Рубли в текстовом виде | четыре рубля |
%r | Рубли в символьном виде | 4 рубля |
%P | Копейки в текстовом виде | двадцать четыре копейки |
%p | Копейки в символьном виде | 24 копейки |
Пример использования в шаблонизаторах
import jinja2
from docxtpl import DocxTemplate
from russian_cost import strfcost
context = dict(cost=12.34)
jinja_env = jinja2.Environment()
jinja_env.filters.update(strfcost=strfcost)
doc = DocxTemplate(template_path)
doc.render(context, jinja_env)
doc.save(result_path)
Внутри шаблона
{{cost|strfcost}}
....
{{cost|strfcost('%S %R и на сдачу %p')}}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.