python中怎么限制每行的字符数,调整每行为指定的字符数输出

有个文件,格式如下:# xxxxx xxxxxxxxxx
yyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyy
# xxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyy
yyyyyyyyyyy
特征就是每个标题行,都以特定的字符#开头,接下来是多行的字符串(行数不固定),怎么写一个python脚本,使除标题行外的字符串,每行都以规定字符数(例如100个)输出,之后加一个空行(即除第一个外,每个标题之前都加上一个空行)。菜鸟入门,请多多指教!

第1个回答  推荐于2017-10-14
f = open('r.txt','w')
for row, l in enumerate(open('a.txt','r').readlines()):
    f.write (('\n' if l.startswith('#') and row else '') + '\n'.join([l.strip()[i*100:i*100+100] for i in range((len(l.strip())-1)/100+1)])+'\n')

追问

这个 第二个for那是要换行的吧,还有,没有输出啊,能不能接着写的详细点,完整点,求指教啊,多谢

追答

不用换行
输出在r.txt里面

追问

结果:# xxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyy 因为序列开始的长度不统一(y代表的),截取之后原来的换行符没有去掉,就出现了上面这种情况,比如第二行之后。
还有一个问题,需要把只有题目没有序列内容的空序列删掉
谢谢

追答

修改一下


step = 100
f = open('r.txt','w')
ls = open('a.txt','r').readlines()
header = ''
content = ''
ls.append('#####\n') # add mark of file end
for row, l in enumerate(ls):
    if l.startswith('#'): # encounter new header
        if content != '':
            f.write(header) # write header       
            for i in range((len(content) - 1) / step  + 1): # zip content
                f.write(content[i*step : i*step + step] + '\n') # write content
        content = '' # reset content
        header = ('\n' if row > 0 else '') + l # write header       
    else:
        content += l.replace('\n','')  # add new line to content

本回答被提问者采纳
相似回答