Я стремлюсь сделать что-то похожее на то, что обычно можно сделать с чем-то вроде textwrap.wrap
, но вместо обтекания текста максимальной длиной I wi sh вместо этого указать , сколько строк .
Я разделил свою строку на массив слов на словесных барьерах , и теперь я хочу воссоединить свой массив строк с пробел так, чтобы у меня было указанное количество строк.
Вот что у меня есть; num
- это количество строк, которые мне нужны, words
- это массив слов. wpc
- (неверное) предположение о том, сколько «слов в блоке»:
num = 4
words = [
"The",
"quick",
"brown",
"fox",
"jumps",
"over",
"the",
"lazy",
"dog"
]
wpc = math.ceil(len(words)/num)
chunks = [' '.join(words[num*i:num*(i+1)]) for i in range(wpc)]
Это дает неверный результат:
[
"The quick brown fox",
"jumps over the lazy",
"dog"
]
В котором 3 строки, а не 4 требуемые .
И список слов, и количество требуемых строк - это динамика c, где я ошибаюсь?
Правильный вывод немного сомнительный ... одна возможность -
[
"The quick brown",
"fox jumps",
"over the",
"lazy dog"
]
Но, конечно, строка «3 слова» может быть где угодно. Не имеет большого значения, как размещается нечетная строка (первая, последняя, случайная), если всегда есть num
строк.
Кроме того, если вы добавите больше слов, было бы хорошо распределить их равномерно слова (опять же, меня не слишком волнует, как они распределяются):
[
"The quick brown",
"giant fox jumps",
"over the very",
"lazy dog"
]