這個問題在這里已經有了答案: 如何用逗號列印數字作為千位分隔符? (29 個回答) 昨天關門。
在字串之間添加一個字符
如何在字串中每三個字符后添加一個逗號?例如,我有一個字串number = "2000",程式應該在字串的右邊三個位置后添加一個逗號。如何才能做到這一點?我試過這個,但沒有用。
integer = 2000
print(str(integer)[:3] "," str(integer)[3:])
當我運行它時,它會列印出200,0
uj5u.com熱心網友回復:
有不同的方法可以給這只貓剝皮,但第一個建議是把字串長度的 mod 和 div 取為 3,并使用 mod(如果有的話)來確定第一段的長度。被均勻地切成三份:
>>> def three_commas(x):
... b, a = divmod(len(x), 3)
... return ",".join(([x[:a]] if a else []) [x[a 3*i:a 3*i 3] for i in range(b)])
...
>>> three_commas("2000")
'2,000'
>>> three_commas("31415")
'31,415'
>>> three_commas("123456789")
'123,456,789'
uj5u.com熱心網友回復:
這是一個易于理解的解決方案。
首先我們反轉數字,然后每 3 個位置插入,一次,然后我們再次反轉數字。
def formatNum(integer):
temp = str(integer)[::-1]
k=0
str1=""
for i in temp:
if(k==3):
str1 = str1 ',' i
k=0
else:
str1 = str1 i
k=k 1
return str1[::-1]
integer = 2000
print(formatNum(integer))
uj5u.com熱心網友回復:
使用正則運算式,您可以匹配 3 位數字并在左側斷言一個數字,并檢查右側是否有 3 位數字的可選重復。
然后用逗號和完整匹配替換,\g<0>
(?m)(?<=\d)\d{3}(?=(?:\d{3})*$)
模式匹配:
(?m)啟用多行(?<=\d)正向向后看,向左斷言一個數字\d{3}匹配 3 位數字(?=積極前瞻(?:\d{3})*$可選匹配 3 位數字直到字串結尾
)關閉前瞻
例子
import re
pattern = r"(?m)(?<=\d)\d{3}(?=(?:\d{3})*$)"
s = "2000\n31415\n123456789"
print(re.sub(pattern, r",\g<0>", s))
輸出
2,000
31,415
123,456,789
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/475460.html
