Python 将字符串放在64个字符后的新行中

Python 将字符串放在64个字符后的新行中,python,string,Python,String,我想在每20个字符后面加\n My_string = "aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeffffffffffffffffffff" 我试过这样做:a=“\n”.join(关于findall((?s)。{,20},我的字符串))[0:-1] 当我像这样的时候: print ''' ------------

我想在每20个字符后面加\n

My_string = "aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeffffffffffffffffffff"
我试过这样做:
a=“\n”.join(关于findall((?s)。{,20},我的字符串))[0:-1]

当我像这样的时候:

print '''
              ---------------------------------------------------------------
               Value of a is 
            %s
              ---------------------------------------------------------------
        ''' % a
输出:

     ---------------------------------------------------------------
                          Value of a is
                          aaaaaaaaaaaaaaaaaaab
bbbbbbbbbbbbbbbbbbbc
cccccccccccccccccccd
ddddddddddddddddddde
eeeeeeeeeeeeeeeeeeef
fffffffffffffffffff
                          ---------------------------------------------------------------
我希望输出像:

           ---------------------------------------------------------------
           Value of a is 
           aaaaaaaaaaaaaaaaaaab
           bbbbbbbbbbbbbbbbbbbc
           cccccccccccccccccccd
           ddddddddddddddddddde
           eeeeeeeeeeeeeeeeeeef
           fffffffffffffffffff
           ---------------------------------------------------------------

您希望创建一个所有行的列表,包括预定义行和包装行,然后在每行前面添加空格标识(最好是在一个步骤中,以避免重复代码),然后将所有内容合并到一个字符串中

虽然正则表达式可以做到这一点,但请看一看漂亮的标准模块
textwrap
,它允许您换行:

import textwrap

My_string = "aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeffffffffffffffffffff"


print '\n'.join('              {0}'.format(line) for line in [
                '---------------------------------------------------------------',
                'Value of a is'] + textwrap.fill(My_string, 20).split('\n') +
                ['---------------------------------------------------------------'])
印刷品

              ---------------------------------------------------------------
              Value of a is
              aaaaaaaaaaaaaaaaaaab
              bbbbbbbbbbbbbbbbbbbc
              cccccccccccccccccccd
              ddddddddddddddddddde
              eeeeeeeeeeeeeeeeeeef
              fffffffffffffffffff
              ---------------------------------------------------------------
试试这个:

# -*- encoding: utf-8 -*-
import re

My_string = "aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeffffffffffffffffffff"
split="\n     "
a = split.join(re.findall("(?s).{,20}", My_string))[0:-1]



print '''     ---------------------------------------------------------------
     Value of a is 
     %s ---------------------------------------------------------------''' % a

看起来可以满足您的要求

您的意思是只有19个a吗?从左到字符(aaaa..或bbbb..或cccc…等)的空格是30个空格(可更改)有什么解决方案吗,所以我们可以用正则表达式…或者在我的程序中进行一些编辑code@SuryaGupta-你可以用你的
re.findall
替换
textwrap.fill
代码,以获得一个包装行列表。+1,我甚至从未见过这个模块,它看起来非常壮观,因为它显示了错误:Traceback(最近一次调用last):File“/output.py”,第18行,在['----------------------------------------------------------------'])文件“/output.py”,第15行,在打印“\n”时。为[ValueError:zero length field name in format]中的行连接(“{}”。格式化(行)我尝试使用re.findall,抛出错误:回溯(最近一次调用):File”/output.py“,第17行,在findall return(模式,标志)中的'Value of a is']+re.findall(My_string,20).split('\n')+File”/usr/lib/python2.6/re.py',第177行。findall(string)TypeError:预期的字符串或缓冲区