Dziwne formatowanie liczb w locale `pl-PL`

0

O do Anielki, to już Polacy nie umieją oddzielać cyfr kropkami dla lepszej czytelności??

m@m-X555LJ ~ $ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'C')
'C'
>>> locale.format('%d', 123456789, grouping=True)
'123456789'
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.format('%d', 123456789, grouping=True)
'123,456,789'
>>> locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8')
'pl_PL.UTF-8'
>>> locale.format('%d', 123456789, grouping=True)
'123456789'

Dlaczego wypisuje niepogrupowane cyferki, 123456789 a nie 123 456 789?

Nawet nie wiem, kto to standaryzuje… Czy takie rzeczy, jaki dać separatar, leżą w gestii Pythona, czy to ustala POSIX, czy może ISO-ileśtam, czy jest to może konfiguracja każdego komputera z osobna?

Da się jakoś doprowadzić to do działania czy raczej trzeba to przyjąć na bo tak i że nie będzie lepiej?

0

Nie mam pojęcia, kim są ci Twoi "polacy", ale musieliby być nieźle upośledzeni, żeby używać kropki jako separatora tysięcy. Całe szczęście, że jestem Polakiem i nie muszę robić takich głupot.

Co do pytania - nikt nie standaryzuje, widocznie twórcy Pythona znają się na polskim zapisie równie dobrze jak i Ty.

0

Ta, ICU to ustala:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "pl_PL.UTF-8")
'pl_PL.UTF-8'
>>> locale.localeconv()
{'currency_symbol': 'zł',
 'decimal_point': ',',
 'frac_digits': 2,
 'grouping': [],
 'int_curr_symbol': 'PLN ',
 'int_frac_digits': 2,
 'mon_decimal_point': ',',
 'mon_grouping': [3, 3, 0],
 'mon_thousands_sep': '.',
 'n_cs_precedes': 0,
 'n_sep_by_space': 1,
 'n_sign_posn': 1,
 'negative_sign': '-',
 'p_cs_precedes': 0,
 'p_sep_by_space': 1,
 'p_sign_posn': 1,
 'positive_sign': '',
 'thousands_sep': ''}

Z tego co wiem, nie można tego edytować w locie.

A, i na bogów: jak już będziesz rozdzielał, to nie spacją ' ' (U+0020), tylko spacją nierozdzielającą ' ' (U+00A0). Nie ma nic bardziej irytującego, niż liczba przełamana na końcu linii…

0

Łohoho, cóż żem ja znalazł…

https://sourceware.org/bugzilla/show_bug.cgi?id=16777

Ktoś wypełnił buga by wstawiono non-breaking space miast tych kropek albo braku separatora. ALe zdaje się że decydenci niezbyt chętni ;/

0
kmph napisał(a):

Łohoho, cóż żem ja znalazł…

https://sourceware.org/bugzilla/show_bug.cgi?id=16777

Ktoś wypełnił buga by wstawiono non-breaking space miast tych kropek albo braku separatora. ALe zdaje się że decydenci niezbyt chętni ;/

Jednak!

https://sourceware.org/bugzilla/show_bug.cgi?id=16777

https://sourceware.org/bugzilla/attachment.cgi?id=10537&action=diff

Chyba wreszcie naprawione?

1 użytkowników online, w tym zalogowanych: 0, gości: 1