每行输出FI字符数限制

2024-09-28 23:15:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我的目标是将输出文件中的字符限制在每行6个字符。 这是到目前为止我所拥有的,但是这不起作用:我得到的一个错误是不能连接str和int

def charLimit(outputfile):

        limit =6
        char = 0
        with open(outputFile,'r+') as file:
           for char in char.len():
               if char != 6 :
                  char = file.read(char)
                  char += 1
              else:
                  file.write('\n')
                  char = 0

Tags: 文件目标def错误withopen字符file
3条回答

错误消息(“cannot concatenate string and int”)来自于read()方法返回字符串的事实。所以在下一行中,当您将1添加到char时,您试图使用+运算符将字符串与int组合起来,这是不可能的。在

如果您想以数字方式添加1,请使用内置的int()方法,例如

char = int(char) + 1

如果要将1添加为字符串,请使用

^{pr2}$

您可以使用^{}模块:

import textwrap

with open(outputFile) as file:
     text = file.read()

with open(outputFile, 'w') as file:
     file.write(textwrap.fill(text, width=6))

注意:它不会在单词中间拆分文本。在

要获得每行6个字符(不包括换行符本身),不考虑单词边界:

import fileinput
from itertools import chain, izip_longest

limit = 6
lines = (line.rstrip('\n') for line in fileinput.input([outputFile], inplace=1))
chars = chain.from_iterable(lines) # all characters
for chunk in izip_longest(*[chars]*limit, fillvalue=''): # grouper recipe*
    print(''.join(chunk)) # write to outputFile
fileinput.close() # close outputFile, delete backup

*grouper recipe

该代码创建一个备份文件并将stdout重定向到outputFile,然后它(懒洋洋地)逐行读取文件,剥离换行符并将这些行链接成一个字符流,然后使用grouper方法每行写入limit个字符,最后关闭文件并删除备份。在

这段代码不适合初学者(只是一个练习)。在

相关问题 更多 >