Я почти уверен, что есть такой вопрос ..
Вот в чем проблема - я хочу разбить строку, используя некоторые указанные символы в качестве разделителей, но я также хочу, чтобы подстроки имели длину, близкую к указанной.
Пример реального мира - разделение длинных строк субтитров.
Пример:
1234,asd dsa qwerty 567,
Я хочу разбить строку на несколько строк с максимальной длиной, скажем, 10, но я не хочу «разбивать» слова. Итак, это должно стать:
1234,asd
dsa qwerty
567,
Конечно, я могу разбить строки по разделителям и затем объединить их снова, пока не достигну желаемой длины, но это будет ужасно медленно.
Я думал об использовании str.find
(и использовать возвращаемую позицию), но он не может работать с регулярным выражением (из-за различных разделителей - .
, ,
, ;
, \n
,
, так далее.).
Я думаю о re.findall
, но я не могу думать о регулярном выражении. Я думал о чем-то вроде
(.*){, max_len}\s
с re.S
, но это явно не работает. Там должен быть какой-то хитрый путь ..