Python: разбиение слов в текстовом файле на ограниченные 40 символов и заполнение дополнительного «слота» пробелами - PullRequest
0 голосов
/ 03 марта 2019

первая публикация в stackoverflow!Я новичок в кодировании в целом, но заинтересован.Хотелось бы немного понять и улучшить мой сценарий.И мне нужна помощь:

Как гласит заголовок, я работаю над сценарием, который

  • Читает текстовый файл
  • Разделить слова в файле настроки / список
  • Добавить слова в одну строку с ограниченным пространством символов 40 (если слово не заканчивается после достижения предела, строка будет занимать только до последнего "пробела" / разрыва)
  • Если строка разрезана, скажем, до 36 символов, то оставшиеся 4 символа должны быть "пробелами"

Мне удалось добиться цели до третьего пункта (с помощью этого сайтаконечно!) но мне нужна помощь по последнему;заполнение строки "пробелами" для завершения строки из 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-го символа.Помощь и совет (если есть более чистый или лучший способ сделать мой сценарий), очень ценятся !!

1 Ответ

0 голосов
/ 03 марта 2019

Добавить следующее:

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
...