如何在每三位数字后添加一个逗号?
How to add a comma after every three digits?
在字符串之间添加一个字符
如何在字符串中的每三个字符后添加一个逗号?例如,我有一个字符串number = "2000"
,程序应该在字符串的右起三位后添加一个逗号。如何才能做到这一点?
我已经试过了,但没有用。
integer = 2000
print(str(integer)[:3] + "," + str(integer)[3:])
当我运行这个时,它打印出200,0
给这只猫换皮的方法有很多种,但我第一个想到的是把字符串长度的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'
这是一个有点容易理解的解决方案。
首先我们反转数字,然后每 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))
使用正则表达式,您可以匹配 3 个数字并在左侧断言一个数字,并检查右侧是否有 3 个数字的可选重复项。
然后替换为逗号和完整匹配 ,\g<0>
(?m)(?<=\d)\d{3}(?=(?:\d{3})*$)
模式匹配:
(?m)
启用多行
(?<=\d)
正后视,向左断言一个数字
\d{3}
匹配 3 个数字
(?=
正面前瞻
(?:\d{3})*$
可选择匹配 3 位数字直到字符串结尾
)
关闭 looakhead
例子
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
在字符串之间添加一个字符
如何在字符串中的每三个字符后添加一个逗号?例如,我有一个字符串number = "2000"
,程序应该在字符串的右起三位后添加一个逗号。如何才能做到这一点?
我已经试过了,但没有用。
integer = 2000
print(str(integer)[:3] + "," + str(integer)[3:])
当我运行这个时,它打印出200,0
给这只猫换皮的方法有很多种,但我第一个想到的是把字符串长度的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'
这是一个有点容易理解的解决方案。
首先我们反转数字,然后每 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))
使用正则表达式,您可以匹配 3 个数字并在左侧断言一个数字,并检查右侧是否有 3 个数字的可选重复项。
然后替换为逗号和完整匹配 ,\g<0>
(?m)(?<=\d)\d{3}(?=(?:\d{3})*$)
模式匹配:
(?m)
启用多行(?<=\d)
正后视,向左断言一个数字\d{3}
匹配 3 个数字(?=
正面前瞻(?:\d{3})*$
可选择匹配 3 位数字直到字符串结尾
)
关闭 looakhead
例子
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