Files
cultivation-world-simulator/src/classes/normalize.py
2025-11-13 18:57:16 +08:00

160 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
名称规范化工具模块
提供统一的名称规范化函数,用于处理各类名称中的括号和附加信息。
适用于:角色名、地区名、物品名等。
"""
def _remove_parentheses(name: str) -> str:
"""
通用的括号移除函数:去除字符串中首个括号及其内容。
支持的括号类型:() [] 【】 「」 『』 <> 《》
Args:
name: 原始字符串
Returns:
去除首个括号后的字符串(去除前后空格)
Examples:
>>> _remove_parentheses("张三(元婴)")
'张三'
>>> _remove_parentheses("青云林海(千年古松(金丹))")
'青云林海'
>>> _remove_parentheses("青云鹿角 -(练气)")
'青云鹿角 -'
"""
s = str(name).strip()
brackets = [
("(", ")"), ("", ""),
("[", "]"), ("", ""),
("", ""), ("", ""),
("<", ">"), ("", "")
]
for left, right in brackets:
idx = s.find(left)
if idx != -1:
# 找到左括号,去除从此开始到字符串末尾的内容
s = s[:idx].strip()
break
return s
def normalize_avatar_name(name: str) -> str:
"""
规范化角色名字:去除括号及其中的附加信息(如境界)。
Args:
name: 原始角色名字,可能包含境界等附加信息
Returns:
规范化后的角色名字
Examples:
>>> normalize_avatar_name("张三(元婴)")
'张三'
>>> normalize_avatar_name("张三,境界:元婴")
'张三,境界:元婴'
"""
return _remove_parentheses(name)
def normalize_region_name(name: str) -> str:
"""
规范化地区名称:去除括号及其中的附加信息(如灵气密度、动植物等)。
处理多层括号:递归去除所有括号及其内容。
Args:
name: 原始地区名称,可能包含资源等附加信息
Returns:
规范化后的地区名称
Examples:
>>> normalize_region_name("太白金府金行灵气10")
'太白金府'
>>> normalize_region_name("青云林海(千年古松(金丹))")
'青云林海'
"""
s = str(name).strip()
brackets = [
("(", ")"), ("", ""),
("[", "]"), ("", ""),
("", ""), ("", ""),
("<", ">"), ("", "")
]
# 递归去除所有括号(用于处理嵌套括号)
while True:
found = False
for left, right in brackets:
start = s.find(left)
end = s.rfind(right)
if start != -1 and end != -1 and end > start:
s = (s[:start] + s[end + 1:]).strip()
found = True
break
if not found:
break
return s
def normalize_item_name(name: str) -> str:
"""
规范化物品名称:去除境界标识等附加信息。
处理格式:
- "青云鹿角 -(练气)" -> "青云鹿角"
- "风速马皮(筑基)" -> "风速马皮"
Args:
name: 原始物品名称,可能包含境界等附加信息
Returns:
规范化后的物品名称
Examples:
>>> normalize_item_name("青云鹿角 -(练气)")
'青云鹿角'
>>> normalize_item_name("风速马皮(筑基)")
'风速马皮'
"""
s = _remove_parentheses(name)
# 额外处理:去除尾部的 " -" 标记
s = s.rstrip(" -").strip()
return s
def normalize_weapon_type(name: str) -> str:
"""
规范化兵器类型名称映射到标准的WeaponType枚举值。
处理格式:
- 去除空格和多余符号
- ""/"剑类"/"剑兵器" -> ""
Args:
name: 兵器类型名称
Returns:
规范化后的兵器类型名称WeaponType.value
Examples:
>>> normalize_weapon_type("")
''
>>> normalize_weapon_type("刀类")
''
"""
s = str(name).strip()
# 移除常见后缀
for suffix in ["", "兵器", "武器"]:
if s.endswith(suffix):
s = s[:-len(suffix)].strip()
return s