Skip to main content

Module for converting russian cost to string

Project description

Tests Lint

Описание модуля russian_cost


Оглавление

  1. Общая информация
  2. Помещение данных в класс и их вывод
  3. Формат вывода данных
  4. Пример использования в шаблонизаторах

Общая информация

Модуль 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

russian_cost-0.1.0.tar.gz (6.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page