37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""批量切分辅助:对应 TS SDK 里订单 OID/快递单号、SDS 订单关键词的批量拆分。"""
|
||
|
||
from __future__ import annotations
|
||
|
||
import re
|
||
|
||
_MULTI_SEP = re.compile(r"[,,\s\n\r]+")
|
||
|
||
|
||
def parse_id_text(text: str) -> list[str]:
|
||
"""把逗号/空白/换行分隔的字符串解析为去重的 ID 列表(RIIN 用)。"""
|
||
items = _MULTI_SEP.split(text or "")
|
||
seen: dict[str, None] = {}
|
||
for item in items:
|
||
item = item.strip()
|
||
if item and item not in seen:
|
||
seen[item] = None
|
||
return list(seen.keys())
|
||
|
||
|
||
def split_lines(text: str) -> list[str]:
|
||
"""把换行分隔的字符串解析为去重的列表(SDS 订单号 keywords 用)。"""
|
||
items = re.split(r"[\n\r]+", text or "")
|
||
seen: dict[str, None] = {}
|
||
for item in items:
|
||
item = item.strip()
|
||
if item and item not in seen:
|
||
seen[item] = None
|
||
return list(seen.keys())
|
||
|
||
|
||
def chunk(items: list[str], size: int) -> list[list[str]]:
|
||
"""把列表按 size 切成多批。"""
|
||
if not items:
|
||
return []
|
||
return [items[i : i + size] for i in range(0, len(items), size)]
|