我有一個數字12345,我想要的結果是'1,2345'。我嘗試了下面的代碼,但失敗了:
n = 12345。
f"{n:,}"
'12,345'
uj5u.com熱心網友回復:
Regex將為你作業:
import re
def format(n)。
return re.sub(r"(d)(?=(d{4}) (?!d))", r "1,", str(N))
>>> format(12345)
'1,2345'。
>>> format(12345678)
'1234,5678'。
>>> format(123456789)。
'1,2345,6789'
解釋:
匹配:
(d)匹配一個數字...(?=(d{4}) (?!d))...后面有一個或多個正好是4個數字的組。
替換:
1,用自己和一個,替換匹配的數字。
uj5u.com熱心網友回復:
你可以使用模數和整數除法將你的數字分成10000的小塊,然后使用','分隔符
def commas(n)。
s = []
while n > 0:
chunk = n % 10000 :.
n //= 10000: chunk = n % 10000.
s.append(str(chunk))
return ','.join(reversed(s))
>>> commas(123456789)
'1,2345,6789'
>>> commas(123)
'123'。
uj5u.com熱心網友回復:
聽起來像一個地區性的東西(*)。這個列印12,3456,7890(Try it online!):
import locale
n = 1234567890[/span]。
locale._override_localeconv["thousand_sep"] = ",".
locale._override_localeconv["grouping"] = [4, 0]
print(locale.format_string('%d', n, grouping=True)
這是基于這個答案的一個我想是黑客的方法。那里的另一個答案談到了使用babel,也許那是一個干凈的方法。
(*)快速搜索發現這個談論中文分組的四位數,而OP的名字似乎有點中文,所以...
uj5u.com熱心網友回復:
使用babel:
>>> from babel.dumbers import format_decimal
>>> format_decimal(1234, format="#,####"/span>, locale="en"/span>)
"1234'
>>> format_decimal(12345, format="#,####"/span>, locale="en"/span>)
"1,2345'
>>> format_decimal(1234567890, format="#,####"/span>, locale="en"/span>)
'12,3456,7890'
這種格式語法在UNICODE LOCALE DATA MARKUP LANGUAGE (LDML)中指定。這是在睡前讀到的一些淺顯的內容。
只使用stdlib(hackish):
>>> from textwrap import wrap
>>> n = 12345
>>> ","。 join(wrap(str(n)[::-1], width=4) [::-1]
'1,2345'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/324435.html
標籤:
