按编号拆分字符串

时间:2017-01-04 20:33:10

标签: python textwrapping

我刚刚编写了一个非常简单的函数,它将字符串按给定的数字分割。它有效,但有缺陷。它有时会分开一个词,例如:

string = "He could not meet her in conversation"
number_of_lines = 5
result = (textwrap.fill(string, count(string, number_of_lines)))
print result

He could
not meet
her in c
onversat
ion

请注意它打破了“对话”这个词。我需要建议如何克服这个问题,或者已经有一个内置函数可用于此任务。

这是实际功能:

import textwrap
import re

def count (s, no_of_lines):
    result = (textwrap.fill(s.upper(), 1))
    count = 1  
    while (len(re.split('[\n]', result)) != no_of_lines):
        count = count + 1
        result = (textwrap.fill(s.upper(), count))
    return count

1 个答案:

答案 0 :(得分:1)

您可以使用break_long_wordsTextWrapper constructor选项:

import textwrap
import re

# define a customised object with option set to not break long words
textwrap = textwrap.TextWrapper(break_long_words=False)

def count (s, no_of_lines):
    # set the width option instead of using a count
    textwrap.width = 1
    result = textwrap.fill(s.upper())
    while len(re.split('\n', result)) > no_of_lines:
        textwrap.width += 1
        result = textwrap.fill(s.upper())
    return textwrap.width

string = "He could not meet her in conversation"
number_of_lines = 5
textwrap.width = count(string, number_of_lines)
result = textwrap.fill(string)
print (result)

输出:

  

他可以   不符合   她在   会话