You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python中Codeheroback输入数字被转为字母的文本文件错误

问题分析

你的代码出现输入数字变成字母的原因是:替换字符串中的\\1在格式化后会变成\1,当输入503时,\1与503拼接成\1503,其中\150是八进制转义字符(对应ASCII码的h),剩下的3保留,最终导致value的值变成h3。

同时原代码使用r+模式打开文件,会在原有文件内容后追加内容,而非覆盖,这可能也是潜在问题。

修复方案

方案1:直接字符串替换(最简洁,适配当前场景)

因为你的目标模板中value本身是空值,没必要用正则,直接字符串替换更高效:

codeheroback = input('Nhập Code Tướng:')  # input返回的本身就是字符串,无需额外转str

checkskinid = '''<int name="heroId" value="" refParamName="" useRefParam="false"/>'''
# 替换空的value部分为输入的内容
result = checkskinid.replace('value=""', f'value="{codeheroback}"')

# 使用w模式覆盖写入文件,避免追加原有内容
with open('back.xml', 'w', encoding='utf-8') as fileback:
    fileback.write(result)

方案2:正则替换(适配更复杂场景,比如原value可能有值)

如果需要用正则处理更灵活的情况,改用\g<1>引用分组(避免八进制转义问题),或者调整分组逻辑直接替换value内容:

import re

codeheroback = input('Nhập Code Tướng:')

checkskinid = '''<int name="heroId" value="" refParamName="" useRefParam="false"/>'''
# 调整正则替换逻辑,直接替换value内的内容为输入值
result = re.sub(
    r'(name="heroId" value=").*?(" refParamName)',
    r'\1{}\2'.format(codeheroback),
    checkskinid
)

with open('back.xml', 'w', encoding='utf-8') as fileback:
    fileback.write(result)

内容的提问来源于stack exchange,提问作者Khánh Đàm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:45:52