嗯,应该把整数部分再劈成两半。
def cn_digit(s):
if isinstance(s, (int, float)):
s = str(s)
elif not isinstance(s, str):
return s
s = s.replace(',', '')
m = re.match(r'(-?)(\d+)((?:\.\d+)?)', s, re.A)
if not m:
return s
intpart = m.group(2)
dem = "万亿兆京垓秭穰沟涧正载极"
result = intpart[-4:]
for i in range(-4,-min(len(intpart), 4*(len(dem)+1)),-4):
result = intpart[i-4:i] + dem[-i//4-1] + result
return m.group(1) + intpart[0:-4*(len(dem)+1)] + result + m.group(3)
【 在 poocp 的大作中提到: 】
: 可以优化,但你这个优化有问题,数字字符串再长3位数,就报越界了。
: 我写的代码不会触发这种错误,只是不对“极”之后的再4分隔插入汉字分隔符而已。
: File "test.py", line 60, in <module>
: ...................
--
修改:moudy FROM 213.95.148.*
FROM 213.95.148.*