gpt4 book ai didi

python - 如何在Python 3.6中创建自动换行程序

转载 作者:行者123 更新时间:2023-11-30 22:04:50 28 4
gpt4 key购买 nike

我正在尝试创建一个程序来模拟 Word 或记事本等程序中的自动换行文本。如果我有很长的文本,我想每行打印 64 个字符(或更少),然后换行符返回,而不截断单词。使用Windows 10、PyCharm 2018.2.4和Python 3.6,我尝试了以下代码:

long_str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit," \
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." \
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris" \
"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in" \
"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." \
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui" \
"officia deserunt mollit anim id est laborum."

concat_str = long_str[:64] # The first 64 characters
rest_str = long_str[65:] # The rest of the string

rest_str_len = len(rest_str)

while rest_str_len > 64:
print(concat_str.lstrip() + " (" + str(len(concat_str)) + ")" + "\n")
concat_str = rest_str[:64]
rest_str = rest_str[65:]
rest_str_len = len(rest_str)

print(concat_str.lstrip() + " (" + str(len(concat_str)) + ")" + "\n")
print(rest_str.lstrip() + " (" + str(len(rest_str)) + ")")

这非常接近,但有两个问题。首先,代码截断行尾或行首的字母,例如以下输出:

# I've added the total len() at the end of each line just to check-sum.
'Lorem ipsum dolor sit amet, consectetur adipiscing elit,sed do e (64)'
'usmod tempor incididunt ut labore et dolore magna aliqua. Ut enim (64)'
'ad minim veniam, quis nostrud exercitation ullamco laborisnisi u (64)'
'aliquip ex ea commodo consequat. Duis aute irure dolor inrepreh (64)'
'nderit in voluptate velit esse cillum dolore eu fugiat nulla par (64)'
'atur. Excepteur sint occaecat cupidatat non proident, sunt in cul (64)'
'a quiofficia deserunt mollit anim id est laborum. (49)'

第二个问题是我需要代码仅在整个单词(或标点符号)之后打印换行符,而不是在 64 个字符处截断单词。

最佳答案

使用textwrap.wrap :

import textwrap

long_str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit," \
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." \
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris" \
"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in" \
"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." \
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui" \
"officia deserunt mollit anim id est laborum."

lines = textwrap.wrap(long_str, 64, break_long_words=False)

print('\n'.join(lines))

这需要长字符串并将其分割成特定宽度的行。另外,将 break_long_words 设置为 False 以防止单词拆分。

关于python - 如何在Python 3.6中创建自动换行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53166472/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com