I'd like to change the thousands separator such that {:,}.format(1234) in Python uses a different character. The separator should be '\u066c'.
How can I set this without affecting any other locals settings?
EDIT: Any other suggestion for a unimposing separator viable in a fixed with font is welcome!
Your options are to either take the
,formatted output and replace the commas, switch locales and use the'n'number format (which will format the number based on the current locale), or use a third party library like babel. The latter gives you full locale control over number formatting, for example, provided there is a locale that uses U+066C as the thousands separator.With the
format()function, the first option is quite straight-forward really:I have yet to find a locale that directly would use
\u066cfor Western Arabic numerals however; U+066C is commonly used only with Eastern Arabic numerals instead. Babel doesn't include any such locale data, at least.You can pass any babel
Localeobject in to thebabel.numbers.format_number()function, so if you need a custom separator you can clone an existing locale and set theLocale.number_symbols['group']value:Note that you have to access an attribute (or the
._dataproperty) to trigger loading the locale configuration, before copying. Otherwise, the data between the original (source) locale and the altered locale will be shared (so theus_localeobject in my snippet above would have the same number separator.Using the
altered_localeobject now results in the expected output: