我有一个for循环,它引用字典并打印出与键关联的值。代码如下:
for i in data:
if i in dict:
print dict[i],我将如何格式化输出,以便每60个字符创建一条新行?例如,将字符数沿边数计算:
0001
0061
0121 LDPQACPTVIDQLTEMLKETGIPVQVIFSSGKDVDLLPQRSNKGNATQYLQQHLAMEPSQ
发布于 2010-03-06 16:29:26
这是一个非常棘手的格式化问题,但我认为以下代码:
import sys
class EveryN(object):
def __init__(self, n, outs):
self.n = n # chars/line
self.outs = outs # output stream
self.numo = 1 # next tag to write
self.tll = 0 # tot chars on this line
def write(self, s):
while True:
if self.tll == 0: # start of line: emit tag
self.outs.write('%4.4d ' % self.numo)
self.numo += self.n
# wite up to N chars/line, no more
numw = min(len(s), self.n - self.tll)
self.outs.write(s[:numw])
self.tll += numw
if self.tll >= self.n:
self.tll = 0
self.outs.write('\n')
s = s[numw:]
if not s: break
if __name__ == '__main__':
sys.stdout = EveryN(60, sys.stdout)
for i, a in enumerate('abcdefgh'):
print a*(5+ i*5),演示如何做到这一点--作为主脚本(5a,10b,等等,中间有空格)为演示目的运行时的输出是:
0001 aaaaa bbbbbbbbbb ccccccccccccccc dddddddddddddddddddd eeeeee
0061 eeeeeeeeeeeeeeeeeee ffffffffffffffffffffffffffffff ggggggggg
0121 gggggggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
0181 hhhhhhh发布于 2010-03-06 16:15:34
你好像在找textwrap
--文本缠绕模块提供了两个方便的函数: work ()和fill(),以及TextWrapper (完成所有工作的类)和一个实用函数dedent()。如果您只是包装或填充一个或两个文本字符串,那么方便函数应该足够好;否则,您应该使用TextWrapper实例来提高效率。
发布于 2010-03-06 16:28:28
# test data
data = range(10)
the_dict = dict((i, str(i)*200) for i in range( 10 ))
# your loops as a generator
lines = ( the_dict[i] for i in data if i in the_dict )
def format( line ):
def splitter():
k = 0
while True:
r = line[k:k+60] # take a 60 char block
if r: # if there are any chars left
yield "%04d %s" % (k+1, r) # format them
else:
break
k += 60
return '\n'.join(splitter()) # join all the numbered blocks
for line in lines:
print format(line)https://stackoverflow.com/questions/2393120
复制相似问题