我在一个变量中有一个大数字,我想要的是每隔5'分开一个空格
代码:
number = 123456789012345678901234567890
print "the number is:", number #Devide every 5'th
我想要的输出是:
The number is: 12345 67890 12345 67890 12345 67890
答案 0 :(得分:7)
In [1]: number = 123456789012345678901234567890
In [2]: num = str(number)
In [3]: print ' '.join(num[i:i+5] for i in xrange(0,len(num),5))
12345 67890 12345 67890 12345 67890
答案 1 :(得分:1)
这当然不优雅,但
rep = str(number)
line = ""
for i, char in enumerate(rep):
line+=char
if (i+1)%5 == 0:
line+=" "
print line
答案 2 :(得分:1)
如果你有一般的grouper
功能,这将是微不足道的:
print ' '.join(grouper(num, 5))
编写该功能很容易。事实上,有两种不同的方法可以做到。
切片 - 如在inspectorG4dget中的答案 - 仅适用于序列,如果最后留下一部分组,则会为您提供一个不完整的组。如果这符合您的要求 - 也适用于您的问题,它确实更简单,更快一点。
这是一个通用的石斑鱼:
def grouper(sequence, n):
return (sequence[i:i+n] for i in xrange(0, len(sequence), n))
迭代器分组更复杂,但它适用于任何可迭代的,甚至是单次迭代器,并且很容易针对尾随值的三种合理行为中的任何一种进行自定义。
你可以在itertools
文档中找到一个食谱,但这里有一个稍短的版本(在最后截断一个部分组):
def grouper(iterable, n):
return zip(*[iter(iterable)]*n)
或者,如果您安装了more_itertools
库,则可以import
从那里开始实施。
How grouper works解释了此实施的工作原理。
答案 3 :(得分:0)
最紧凑的方法是使用正则表达式执行此操作。例如:
>>> s ="123456789012345678901234567890"
>>> re.sub('(\d{5})', r'\1 ', s)
12345 67890 12345 67890 12345 67890
如果您希望将所有群组作为列表,则可以执行此操作:
>>> re.findall('(\d{5})', s)
['12345', '67890', '12345', '67890', '12345', '67890']
然后你可以加入:
>>> " ".join(re.findall('(\d{5})', s))
12345 67890 12345 67890 12345 67890
答案 4 :(得分:-1)
这样的事情可能会起作用
str_number = str(number)
output = ""
for i in range(len(str_number)):
output = output + str_number[i]
if i !=0 and i % 5 == 0:
output = output + " "
print "The number is: " + output