Есть ли способ отформатировать различные валюты на Python? - PullRequest
0 голосов
/ 11 августа 2010

У меня есть веб-сервер Python (mod_python, если это имеет какое-то значение), который я хочу начать форматировать некоторую валюту. У меня есть две части информации, когда я форматирую валюту - значение (как число) и валюту (как трехбуквенный код ISO 4217 ). Я также могу извлечь страну (или даже город), в котором форматируется валюта. Я могу ожидать, что форматируется большое разнообразие валют - USD, CAD, JPY, GBP, EUR и т. Д. Каждый запрос может быть в другом валюта.

Я знаю о модуле локали , но он не делает то, что я хочу. Похоже, что этот модуль основан на локали компьютера, поэтому он плохо работает для форматирования любой данной валюты.

Есть ли способ сделать это в Python? Или кто-нибудь знает хорошую библиотеку, которая может решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

Для своих потребностей в интернационализации я почти всегда обращаюсь к ICU , по-настоящему потрясающему пакету как по широте, так и по глубине - обычно через pyIcu , хотя в прошлом я имелсделать свое собственное обертывание, когда pyIcu еще не завернул какой-то угол ICU, который мне был нужен (я не уверен, что они в настоящее время оборачивают все необходимые вам операции форматирования валюты).

Документыдля PyIcu здесь для чтения "поверх" собственных документов ICU здесь - другими словами, документ, специфичный для PyIcu, по сути является "разговорником и словарем" о том, как«перевести» собственные документы ICU, ориентированные на C ++, в документы для PyIcu (и ориентированные на Python ;-).Да, я знаю, не идеальный - не единственный пакет с открытым исходным кодом с несовершенными документами, я думаю (я, я думаю, это возможность для некоторой предприимчивой души написать книгу «PyIcu, отсутствующее руководство» или тому подобное; -).

1 голос
/ 11 августа 2010

Я уверен, что вы могли бы использовать регулярное или десятичное форматирование, но этот модуль кажется многообещающим:

http://code.google.com/p/python-money/

Python-money предоставляет тщательно разработанные базовые примитивы Python для работыс деньгами и валютой.

Основные цели этого модуля - помочь в разработке финансовых приложений за счет повышения тестируемости и возможности повторного использования, уменьшения дублирования кода и снижения риска возникновения дефектов в коде.

Модуль определяет два основных класса Python - класс Currency и класс Money.Он также предварительно определяет все мировые валюты в соответствии со стандартом ISO 4217.Классы определяют некоторые основные операции для работы с деньгами, переопределяют сложение, вычитание, умножение и т. Д. В Python для учета работы с деньгами в разных валютах.Они также определяют валютные операторы сравнения.Чтобы избежать ошибок точности с плавающей запятой в денежных вычислениях, модуль использует исключительно тип десятичного числа Python.

Дизайн модуля основан на шаблоне корпоративного проектирования Money, как описано в документе «Шаблоны архитектуры корпоративных приложений» Мартина Фаулера..

...