我想以与.split()
类似的方式分割字符串(因此产生一个列表)但是以更聪明的方式:我希望将它拆分成最多15个的块字符,但不是中间分词所以:
string = 'A string with words'
[splitting process takes place]
list = ('A string with','words')
此示例中的字符串分为“with”和“words”,因为这是您可以拆分它的最后一个位置,第一个位是15个字符或更少。
答案 0 :(得分:29)
>>> import textwrap
>>> string = 'A string with words'
>>> textwrap.wrap(string,15)
['A string with', 'words']
答案 1 :(得分: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']
请注意空间处理方面的细微差别。
答案 2 :(得分:1)
您可能希望使用正则表达式。 python re模块有一个split
函数,但我认为只需匹配组就可以提供更好的服务。
>>> re.findall(r'(.{,15})\s(.*$)', 'A string wth words')
[('A string wth', 'words')]
[编辑]抱歉,错过了你想要多个块的地方。我打算在这里放一个更复杂的正则表达式,但上面引用的textwrap模块是为此而制作的。如果你愿意的话,我会把正则表达式作为练习延伸。