On Sun, Jan 28, 2018 at 09:51:05PM +1000, Nick Coghlan wrote:
Checking https://www.python.org/dev/peps/pep-0378/, we did suggest using the locale module for cases where the engineering style groups-of-three structure wasn't appropriate, with the parallel being drawn to the fact that you also need to use locale dependent formatting to get a decimal separator other than ".".
Or you could use string replacement: py> format(123456789.25, "0,.3f").replace(',', '_').replace('.', '·') '123_456_789·250' which may not be quite as convenient or efficient, and it doesn't work where groups-of-three aren't appropriate. But on the other hand using locale has a number of disadvantages too: - quoting PEP 378: "Finance users and non-professional programmers find the locale approach to be frustrating, arcane and non-obvious". https://www.python.org/dev/peps/pep-0378/ - the available locales and their spellings are OS dependent; - its not cheap, thread-safe or local to your library/function. The documentation for locale warns: "It is generally a bad idea to call setlocale() in some library routine, since as a side effect it affects the entire program. Saving and restoring it is almost as bad: it is expensive and affects other threads that happen to run before the settings have been restored." -- Steve