Python:将文本文件中的单词拆分为有限的40个字符,并用空格填充额外的“插槽”

问题描述 投票:1回答:1

第一次发布在stackoverflow!我是编码的新手,但感兴趣。会喜欢我的剧本的一些见解和改进。我需要帮助:

正如标题所述,我正在编写一个脚本

  • 读取文本文件
  • 将文件中的单词拆分为字符串/列表
  • 将单词附加到具有40个有限字符空间的一行中(如果在达到限制时单词未完成,则字符串将仅持续到最后一个“空格”/中断)
  • 如果字符串被剪成36个字符,则其余4个字符应为“空格”

我已经成功完成任务直到第三点(当然,在这个网站的帮助下!),但我需要最后一个帮助;用“spaces”填充字符串,每行填写40个字符的字符串。

以下是我目前的脚本:

import sys

file = open("read_me2.txt", "r+")
text = file.read()

def split_string (text, limit, sep= " "):

    words = text.split()
    if max(map(len,words)) > limit:
        raise ValueError("limit is too small")
    res = []
    part = words[0]
    others = words[1:]
    for word in others: 
        if len(sep)+len(word) > limit-len(part):
            res.append(part)
            part = word              

        else:
            part +=sep+word

    if part:
        res.append(part)

    return res

print(split_string(text=text, limit=40))

以下是read_me2.txt包含的内容:

好的,这是一个测试,看看它是否可以将字符数减少到40,然后根据空格的存在将其分开,什么不是。我认为这超过40个字符。我们试试吗?

这就是我输出的内容:

['好吧,这是一个测试,看它是否可以削减','字符的数量为40然后','根据','空格和不存在的东西将它分开。我认为这是','超过40个字符。我们试试','它?']

如您所见,某些行的字符少于40个。那些应该附加空格直到第40个字符。非常感谢帮助和建议(如果有一个更清洁或更好的方式来做我的脚本)!

python string split append character
1个回答
0
投票

添加以下内容:

def pad(line, limit):
    return line + " " * (limit-len(line))

def split_string (text, limit, sep= " "):

    words = text.split()
    if max(map(len,words)) > limit:
        raise ValueError("limit is too small")
    res = []
    part = words[0]
    others = words[1:]
    for word in others:
        if len(sep)+len(word) > limit-len(part):
            res.append(part)
            part = word

        else:
            part +=sep+word

    if part:
        res.append(part)

    result = [pad(l, limit) for l in res]
    return result
© www.soinside.com 2019 - 2024. All rights reserved.