我有这个:
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)