在字符串中每3个字符后插入句点

uda*_*rH3 4 python python-2.7

我有这个:

from __future__ import print_function

def f_comma(p_string):
   v_string = p_string
   if (type(v_string) == type(int()) or type(v_string) == type(long()) or  
       type(v_string) == type(float())):
      v_string = str(v_string)
   else:   
      l_string = list(v_string)
      for v_index in range(3, len(l_string), 4):
         l_string.insert(v_index, ',')
      v_result = ''.join(l_string)
   return (v_result)

print (f_comma('qwertyuiopaq'))
Run Code Online (Sandbox Code Playgroud)

似乎我无法弄清楚为什么如果我使用超过11个字符的字符串,句点停止插入,但只有11个字符,它工作正常.我在这件作品中做错了什么?

Nit*_*zle 15

您可以在每个第n个字符后插入一个逗号,如下所示:

>>> my_str = 'qwertyuiopaq'
>>> ','.join(my_str[i:i+3] for i in range(0, len(my_str), 3))
'qwe,rty,uio,paq'
Run Code Online (Sandbox Code Playgroud)

这也适用于任意长度的字符串.

编辑:以与@ mhawke的答案类似的方式编写的函数,可以选择更改分组/字符.

>>> def f_comma(my_str, group=3, char=','):
...     my_str = str(my_str)
...     return char.join(my_str[i:i+group] for i in range(0, len(my_str), group))
... 
>>> f_comma('qwertyuiopaq')
'qwe,rty,uio,paq'
>>> f_comma('qwertyuiopaq', group=2)
'qw,er,ty,ui,op,aq'
>>> f_comma('qwertyuiopaq', group=2, char='.')
'qw.er.ty.ui.op.aq'
Run Code Online (Sandbox Code Playgroud)