fix: 修复偏旁库加载失败 — 改用更健壮的markdown表格解析
This commit is contained in:
+19
-3
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user