add thinking
This commit is contained in:
53
src/utils/text_wrap.py
Normal file
53
src/utils/text_wrap.py
Normal file
@@ -0,0 +1,53 @@
|
||||
def wrap_text(text: str, max_width: int = 20) -> list[str]:
|
||||
"""
|
||||
将长文本按指定宽度换行
|
||||
|
||||
Args:
|
||||
text: 要换行的文本
|
||||
max_width: 每行的最大字符数,默认20
|
||||
|
||||
Returns:
|
||||
换行后的文本行列表
|
||||
"""
|
||||
if not text:
|
||||
return []
|
||||
|
||||
lines = []
|
||||
current_line = ""
|
||||
|
||||
# 按换行符分割,处理已有的换行
|
||||
paragraphs = text.split('\n')
|
||||
|
||||
for paragraph in paragraphs:
|
||||
if not paragraph.strip():
|
||||
lines.append("")
|
||||
continue
|
||||
|
||||
words = paragraph.split()
|
||||
|
||||
for word in words:
|
||||
# 如果当前行加上新词会超过限制
|
||||
if len(current_line) + len(word) + 1 > max_width:
|
||||
if current_line:
|
||||
lines.append(current_line.strip())
|
||||
current_line = word
|
||||
else:
|
||||
# 如果单个词就超过限制,强制换行
|
||||
if len(word) > max_width:
|
||||
# 长词强制切分
|
||||
for i in range(0, len(word), max_width):
|
||||
lines.append(word[i:i + max_width])
|
||||
else:
|
||||
lines.append(word)
|
||||
else:
|
||||
if current_line:
|
||||
current_line += " " + word
|
||||
else:
|
||||
current_line = word
|
||||
|
||||
# 处理段落的最后一行
|
||||
if current_line:
|
||||
lines.append(current_line.strip())
|
||||
current_line = ""
|
||||
|
||||
return lines
|
||||
Reference in New Issue
Block a user