PYTHON如何每三步用点分隔数字?

PYTHON如何每三步用点分隔数字?,python,Python,范例 test = "123456789123" 我试过了 test = "1234567" print(".".join(test)) 结果 1.2.3.4.5.6.7 但是我想要这个 结果 123.456.789.123 您可以将字符作为列表循环,并使用计数器跟踪您的位置: s = "123456789123" output = [] count = 0 for c in list(s): count += 1 if count == 4: output.appen

范例

test = "123456789123"
我试过了

test = "1234567"

print(".".join(test))
结果

1.2.3.4.5.6.7
但是我想要这个

结果

123.456.789.123

您可以将字符作为列表循环,并使用计数器跟踪您的位置:

s = "123456789123"
output = []
count = 0
for c in list(s):
  count += 1
  if count == 4:
    output.append(".")
    count = 0
    continue
  else:
    output.append(c)

result = ''.join(output)
print(result)

没有列表理解的非常简单的解决方案:

test = '123456789123'
result = ''

while test:
    result += test[:3]
    if len(test) > 3:
        result += '.'
    test = test[3:]

print(result)

一个简单的实现:

test = "1234567891234431222334442234ee3432"
testJoined = ""

for i in range(0,len(test),3):
    testJoined += test[i:i+3] + "."

print(testJoined[0:-1])
测试1:

"1234567891234431222334442234ee3432"
结果1:

123.456.789.123.443.122.233.444.223.4ee.343.2
测试2:

"1234567891234431222334442234ee34aa32"
结果2:

123.456.789.123.443.122.233.444.223.4ee.34a.a32

如果你真的不需要点,你可以简单地使用:

formated_number = "{:,}".format(value)
如果你真的想要这些点:

formated_number.replace(',','.')

下面是一个简单的正则表达式解决方案:

import re
print(re.sub(r'(?<!^)(?=(\d{3})+$)', r'.', "12345673456456456"))

正则表达式使用lookahead来检查给定位置后的位数是否可以被3整除。

我发现建议的重复项很奇怪。似乎op询问的是如何用千位分隔符格式化数字,而不是将列表分块。当前的复制链接重定向到某个密码子分裂分子生物学家的答案。如果您对使用千位分隔符格式化数字更感兴趣,请看一看。下面的投票者能给我们提供唯一正确的解决方案吗?即使是被接受的答案也得到了两张反对票,我想一定有更好的办法。。。事实上,我发现通过将两个常量和输入字符串传递给标准库方法来在一行中解决问题是一个相当有效的解决方案,因此我非常希望能够解释为什么这值得进行下一票。酷,类似这样的东西:result 123.456.789-123
12.345.673.456.456.456