项目初始化
This commit is contained in:
30
daily/text_utils.py
Normal file
30
daily/text_utils.py
Normal file
@@ -0,0 +1,30 @@
|
||||
"""文本裁剪等轻量工具。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
|
||||
_WS = re.compile(r"\s+")
|
||||
|
||||
|
||||
def clip_text(text: str, limit: int) -> str:
|
||||
text = _WS.sub(" ", (text or "").strip())
|
||||
if limit <= 0 or len(text) <= limit:
|
||||
return text
|
||||
return text[: max(1, limit - 1)] + "…"
|
||||
|
||||
|
||||
def trim_brief(text: str, limit: int) -> str:
|
||||
"""企微简要:控制在 limit 内,优先在句读处截断,不加省略号。"""
|
||||
text = _WS.sub(" ", (text or "").strip())
|
||||
if not text or limit <= 0 or len(text) <= limit:
|
||||
return text
|
||||
for sep in ("。", "!", "?", ";"):
|
||||
pos = text.find(sep)
|
||||
if pos != -1 and pos + 1 <= limit + 8:
|
||||
return text[: pos + 1]
|
||||
for sep in (",", "、"):
|
||||
pos = text.find(sep)
|
||||
if pos != -1 and pos + 1 <= limit:
|
||||
return text[: pos + 1]
|
||||
return text[:limit].rstrip(",、;: ")
|
||||
Reference in New Issue
Block a user