def insertNewLine(text, lenght):
if len(text) < lenght:
return text
else:
print text[:lenght]
return (text[:lenght]+'\n'+ insertNewLine(text[lenght:],lenght))
但问题是这个词正在被我的程序划分......这不应该发生......例如
=&GT;输入:
“随机文字再次换行。”和长度:5
=&GT;我的输出:
Rando m tex t to wrap again .
=&GT;预期产出:
Random text to wrap again.
答案 0 :(得分:0)
这是解决问题的可能方法,我使用re python模块将\ n字符放在正确的位置。
import re
def insertNewLine(text, lenght):
return re.sub('((.*){' + str(lenght-1) + ',}?)\s', '\g<1>\n', text)
if __name__ == "__main__":
print insertNewLine("Random text to wrap again.", 5)
>>>python test.py
Random
text
to wrap
again.
答案 1 :(得分:0)
def insertNewLine(text, lenght):
if len(text) < lenght:
return text
else:
print text[:lenght]
return (text[:lenght]+'\n'+ insertNewLine(text[lenght:],lenght))
“随机文字再次换行。”和长度:5
问题是你用
说'\n'
你想要一个新行5个字符。 “随机”这个词有6个,这就是为什么它在Rando被切割的原因。还要记住,空格也算作一个角色。因此,当您的递归通过时,它只是计算5个字符,然后每5个插入一个新行。
答案 2 :(得分:0)
看起来你需要在一定长度后包裹整个单词,并忽略空格;我会做这样的事情:
def wrap(text, length):
words = text.split()
lines = []
line = ''
for w in words:
if len(w) + len(line) > length:
lines.append(line)
line = ''
line = line + w + ' '
if w is words[-1]: lines.append(line)
return '\n'.join(lines)
这基本上可以通过将文本分成整个单词,然后将它们的行组合到你的包装长度来实现。这样你就不必弄清楚你是否想要突破一个词。我没有费心去检查你的length
是否比你最长的单词短,但这也是一个考虑因素。
答案 3 :(得分:0)
def insertNewline(text, length):
'''
This function can only be applied to normal text.
'''
if len(text) <= length:
print(text)
return
elif text[length - 1] == ' ':
print(text[:length - 1])
return insertNewline(text[(length):], length)
elif text[length] == ' ':
print(text[:length])
return insertNewline(text[(length + 1):], length)
else:
i = 0
while text[length + i] != ' ' and text[length + i] != ',' and text[length + i] != '.':
i += 1
if text[length + i] == ' ':
print(text[:(length + i)])
return insertNewline(text[(length + i + 1):], length)
else:
print(text[:(length + i + 1)])
return insertNewline(text[(length + i + 2):], length)
此代码可以正常使用普通文本,我的意思是简单的英语句子只有&#39;,&#39;和&#39;。&#39;作为标点符号,每个标点符号后只有一个空格,就像正常的文章写作一样。如果您想将此代码应用于更完整的文本,我认为您可以自己更新此代码。 我使用&#34;递归&#34;正如你在问题中所要求的那样。我认为这段代码应该对你有所帮助。 我不是python的专家,仍然在学习过程中。希望你能从我的答案中得到你想要的东西。