python如何打印每个字符的空间

时间:2014-01-17 22:01:26

标签: python

我在一个变量中有一个大数字,我想要的是每隔5'分开一个空格

代码:

number = 123456789012345678901234567890
print "the number is:", number #Devide every 5'th 

我想要的输出是:

The number is: 12345 67890 12345 67890 12345 67890

5 个答案:

答案 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