玩轉千位分隔符輸出
阿新 • • 發佈:2022-04-28
1、Python
1.1 format方法:
2.7版本以上直接用format設定千分位分隔符
Python 2.7 (r27:82500, Nov 23 2010, 18:07:12) [GCC 4.1.2 20070115 (prerelease) (SUSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> format(1234567890,',') '1,234,567,890' >>> print 'The value is {:0,.2f}'.format(1234567.125) The value is 1,234,567.12 >>> print 'The value is {:0,.2f}'.format(1234567.126) The value is 1,234,567.13
1.2 正則實現:
import re
def strConv(s):
s = str(s)
while True:
(s,count) = re.subn(r"(d)(d{3})((:?,ddd)*)$",r"1,23",s)
if count == 0 : break
return s
print strConv(12345)
1.3 locale
def number_format(num, places=0): """Format a number according to locality and given places""" locale.setlocale(locale.LC_ALL, "") return locale.format("%.*f", (places, num), True) >>> import locale >>> number_format(12345678.123) '12,345,678' >>> number_format(12345678.123, 2) '12,345,678.12' >>> import locale >>> a = {'size': 123456789, 'unit': 'bytes'} >>> print(locale.format("%(size).2f", a, 1)) 123456789.00 >>> locale.setlocale(locale.LC_ALL, '') # Set the locale for your system 'en_US.UTF-8' >>> print(locale.format("%(size).2f", a, 1)) 123,456,789.00
1.4 DIY
>>> s = "1234567890"
>>> s = s[::-1]
>>> a = [s[i:i+3] for i in range(0,len(s),3)]
>>> print (",".join(a))[::-1]
2、Perl
perl -e '$size = "1234567890";while($size =~ s/(d)(d{3})((:?,ddd)*)$/$1,$2$3/){};print $size, "n";'
1,234,567,890
3、Sed
echo 12345|sed -e :a -e 's/(.*[0-9])([0-9]{3})/1,2/;ta' 12,345
4、Bash
printf "%'dn" 12345
12,345
5、JavaScript
5.1 Number.prototype.toLocaleString() 方法
parseInt('123456789456.34').toLocaleString()
"123,456,789,456"
5.2 Intl object
Intl.NumberFormat().format(1234.1235);
"1,234.124"
5.3 正則
function addCommas(n){
var rx= /(d+)(d{3})/;
return String(n).replace(/^d+/, function(w){
while(rx.test(w)){
w= w.replace(rx, '$1,$2');
}
return w;
});
}
addCommas('123456789456.34');
"123,456,789,456.34"
'12345678.34'.toString().replace(/B(?=(d{3})+(?!d))/g, ",")
"12,345,678.34"
注:某些方法不支援小數部分或者小數部分四捨五入,請慎用。
6、Refer:
[1] shell、perl、python 千分位 逗號分隔符輸出
http://wenzhang.baidu.com/page/view?key=4f73729cefd8af8c-1426633956
[2] How do I add a thousand seperator to a number in JavaScript? [duplicate]
[3] How to print a number with commas as thousands separators in JavaScript