fix: 修复偏旁库加载失败 — 改用更健壮的markdown表格解析

This commit is contained in:
youpaishidifu
2026-07-31 09:57:32 +08:00
parent bd5ec8cbd8
commit e91fc20523
+19 -3
View File
@@ -50,10 +50,26 @@ def _load_radicals():
try:
with open(_RADICALS_FILE, 'r', encoding='utf-8') as f:
for line in f:
# 匹配 "亻 | U+2E80" 格式
m = re.match(r'^.\s*\|\s*U\+([0-9A-Fa-f]{4})', line.strip())
line = line.strip()
# 跳过标题行和空行
if not line or line.startswith('#'):
continue
# 寻找 U+XXXX 格式
m = re.search(r'U\+([0-9A-Fa-f]{4})', line)
if m:
_RADICAL_CHARS.add(chr(int(m.group(1), 16)))
# 按竖线分割,取第一个字段(偏旁)或第二个(如果第一个是空)
parts = [p.strip() for p in line.split('|')]
# 找到包含 U+ 的字段索引
for i, part in enumerate(parts):
if 'U+' in part:
# 偏旁字段通常是前一个字段
if i > 0 and parts[i-1]:
radical = parts[i-1]
# 偏旁应为单个字符(可能含空格)
radical = radical.strip()
if len(radical) == 1:
_RADICAL_CHARS.add(radical)
break
logger.info(f"[radicals] 已加载偏旁库: {len(_RADICAL_CHARS)} 个偏旁")
except Exception as e:
logger.warning(f"[radicals] 偏旁库加载失败: {e}, 使用默认范围 U+2E80-U+2FDF")