Разделение строки с использованием пробелов и максимальной длины

python string split

3116 просмотра

3 ответа

Я хотел бы разделить строку аналогично .split()(таким образом, получая в результате список), но более интеллектуальным способом: мне бы хотелось, чтобы она разбивалась на куски длиной до 15 символов, но не разбивались на средние слова. так:

string = 'A string with words'

[splitting process takes place]

list = ('A string with','words')

Строка в этом примере разделена между «with» и «words», потому что это последнее место, где вы можете разделить ее, и первый бит будет 15 символами или меньше.

Автор: chrism Источник Размещён: 12.11.2019 09:53

Ответы (3)


29 плюса

Решение
>>> import textwrap
>>> string = 'A string with words'
>>> textwrap.wrap(string,15)
['A string with', 'words']
Автор: ghostdog74 Размещён: 12.04.2010 02:06

6 плюса

Вы можете сделать это двумя разными способами:

>>> import re, textwrap
>>> s = 'A string with words'
>>> textwrap.wrap(s, 15)
['A string with', 'words']
>>> re.findall(r'\b.{1,15}\b', s)
['A string with ', 'words']

Обратите внимание на небольшую разницу в обработке пространства.

Автор: jemfinch Размещён: 12.04.2010 02:06

1 плюс

Вы, вероятно, хотите использовать регулярное выражение. Модуль python re имеет splitфункцию, но я думаю, что вам лучше обслужить, просто сопоставив группы.

>>> re.findall(r'(.{,15})\s(.*$)', 'A string wth words')
[('A string wth', 'words')]

[Изменить] Извините, пропустил точку, где вы хотите несколько кусков. Я собирался поместить здесь более сложное регулярное выражение, но модуль textwrap, приведенный выше, создан для этого. Я оставлю расширение регулярного выражения в качестве упражнения для вас, если вы решите.

Автор: JimB Размещён: 12.04.2010 02:06
Вопросы из категории :
32x32