XML文件中提取修改experience标签数值并添加千分符的需求
Hey there! 处理XML里的<experience>数值替换,用专门的XML解析工具比硬写正则靠谱太多——毕竟XML的标签可能有换行、空格,正则很容易误匹配其他内容。下面给你一个Python的实现方案,完美满足你的需求:
核心思路
- 用Python标准库的
xml.etree.ElementTree解析XML(不用额外装包) - 遍历所有
<char>节点下的<experience>标签 - 提取原数值,按规则添加千分符(你示例里用点作为千分符,超过100万自动加两个分隔符)
- 把修改后的数值写回标签,最后保存文件
完整代码示例
import xml.etree.ElementTree as ET def format_experience(num_str): # 清理数值里的空格,转成整数 num = int(num_str.strip()) num_str = str(num) # 反转字符串,按每三位分割,再反转回来拼接(实现千分符分隔) reversed_str = num_str[::-1] split_parts = [reversed_str[i:i+3] for i in range(0, len(reversed_str), 3)] formatted = '.'.join(split_parts)[::-1] return formatted # 加载你的XML文件(如果是字符串内容,用ET.fromstring()替代) tree = ET.parse('your_input.xml') root = tree.getroot() # 遍历所有<char>节点,处理<experience> for char_node in root.findall('char'): exp_node = char_node.find('experience') # 确保标签存在且有内容 if exp_node is not None and exp_node.text is not None: original_val = exp_node.text exp_node.text = format_experience(original_val) # 保存修改后的XML文件 tree.write('your_output.xml', encoding='utf-8', xml_declaration=True)
注意事项
- XML格式合法性:你给出的XML片段缺少根节点(XML必须有唯一根元素),所以要先把内容包装起来,比如:
<root> <class>OverAll</class> <char>...</char> <char>...</char> </root> - 千分符自定义:如果你想用逗号做千分符,只需要把
format_experience函数里的'.'.join(...)改成','.join(...)就行 - 容错处理:代码里已经处理了标签为空的情况,避免运行报错
这个方案能稳定处理各种XML格式的情况,不会出现正则匹配漏改、误改的问题~
内容的提问来源于stack exchange,提问作者Gletschernadel
相关产品推荐
相关产品推荐

