Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:文件格式_Python_File_Formatting - Fatal编程技术网

Python:文件格式

Python:文件格式,python,file,formatting,Python,File,Formatting,我有一个for循环,它引用字典并打印出与键关联的值。代码如下: for i in data: if i in dict: print dict[i], 如何格式化输出,以便每60个字符创建一行新行?以及沿侧面的字符计数,例如: 0001 mrqlllisdldntwvgdqqalehlqeylgdrgnfylayatgrsyhsarelqkqvglmep 0061 DYWLTAVGSEIYHPEGLDQHWADYLSHWQRDILQAADGFEALKPQSPLEQNPW

我有一个for循环,它引用字典并打印出与键关联的值。代码如下:

for i in data:
    if i in dict:
        print dict[i],
如何格式化输出,以便每60个字符创建一行新行?以及沿侧面的字符计数,例如:

0001 mrqlllisdldntwvgdqqalehlqeylgdrgnfylayatgrsyhsarelqkqvglmep
0061 DYWLTAVGSEIYHPEGLDQHWADYLSHWQRDILQAADGFEALKPQSPLEQNPWKISYH
0121 LDPQACPTVIDQLTEMLKETGIPVQVIFSSGKDVDLLPQRSNKGNATQYLQHLAMEPSQ


看起来你在找

textwrap模块提供了两个方便的函数,wrap()和 fill()以及执行所有工作的类TextWrapper,以及 实用程序函数dedent()。如果你只是包装或填充一个或多个 两个文本字符串,方便功能应该足够好; 否则,为了提高效率,应该使用TextWrapper实例


这是一个非常棘手的格式问题,但我认为以下代码:

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),
演示了如何执行此操作--出于演示目的而运行时,主脚本(五个a、十个b等,中间有空格)的输出为:


我还没有在实际数据上测试它,但我相信下面的代码可以完成这项工作。它首先构建整个字符串,然后一次输出一行60个字符。它使用range()的三参数版本按60计数

s = ''.join(dict[i] for i in data if i in dict)
for i in range(0, len(s), 60):
    print '%04d %s' % (i+1, s[i:i+60])
0001 aaaaa bbbbbbbbbb ccccccccccccccc dddddddddddddddddddd eeeeee
0061 eeeeeeeeeeeeeeeeeee ffffffffffffffffffffffffffffff ggggggggg
0121 gggggggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
0181 hhhhhhh
s = ''.join(dict[i] for i in data if i in dict)
for i in range(0, len(s), 60):
    print '%04d %s' % (i+1, s[i:i+60])