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

使用正则表达式修改Python列表失效,求排查原因

正则替换未生效的问题排查与解决

问题描述

我正在编辑一个自定义列表,列表内容如下:

['\n//POINTER #1 @ $3BA4 - STRING #1 @ $3DD3\n#W32($3BA4)\n・All enemies defeated[END-FE]', 
 '\n//POINTER #2 @ $3BA8 - STRING #2 @ $3DEC\n#W32($3BA8)\n・Follower dies[NLINE]\n・All party members die[END-FE]', 
 '\n//POINTER #3 @ $3BAC - STRING #3 @ $3E17\n#W32($3BAC)\n・Follower dies[NLINE]\n・All party members die[END-FE]', 
 '\n//POINTER #4 @ $3BB0 - STRING #4 @ $3E42\n#W32($3BB0)\n・All party members die[END-FE]']

我想要替换每个列表项中格式为 //POINTER #X @ $XXXX - STRING #X @ $XXXX\n 的内容,尝试了以下代码,在regex101测试中正则能匹配所有目标项,但实际运行未完成替换:

import re
engfile_chunks = [<list above>]
engfile_chunks_new = [re.sub(r'(\\n//POINTER).+?(?=\\n)', '', chunks) for chunks in engfile_chunks]

原因分析

问题出在正则表达式的转义处理上:

  • 在Python的原始字符串(raw string)中,\\n 会被保留为字面量的 \n 字符组合,而你的列表项里的换行是真实的换行符(\n),不是字面量字符串,导致正则无法匹配到目标内容。
  • 你在regex101中测试时,输入的是字面量的 \n,和Python中实际存储的真实换行符不一致,所以测试能匹配但实际运行失效。

解决方法

把正则表达式里的 \\n 改成 \n,直接匹配真实换行符即可:

import re
engfile_chunks = [
    '\n//POINTER #1 @ $3BA4 - STRING #1 @ $3DD3\n#W32($3BA4)\n・All enemies defeated[END-FE]',
    '\n//POINTER #2 @ $3BA8 - STRING #2 @ $3DEC\n#W32($3BA8)\n・Follower dies[NLINE]\n・All party members die[END-FE]',
    '\n//POINTER #3 @ $3BAC - STRING #3 @ $3E17\n#W32($3BAC)\n・Follower dies[NLINE]\n・All party members die[END-FE]',
    '\n//POINTER #4 @ $3BB0 - STRING #4 @ $3E42\n#W32($3BB0)\n・All party members die[END-FE]'
]
engfile_chunks_new = [re.sub(r'\n//POINTER.+?(?=\n)', '', chunks) for chunks in engfile_chunks]

# 验证结果
for item in engfile_chunks_new:
    print(repr(item))

运行后每个列表项里的指针注释行都会被正确移除,输出结果为:

'#W32($3BA4)\n・All enemies defeated[END-FE]'
'#W32($3BA8)\n・Follower dies[NLINE]\n・All party members die[END-FE]'
'#W32($3BAC)\n・Follower dies[NLINE]\n・All party members die[END-FE]'
'#W32($3BB0)\n・All party members die[END-FE]'

如果想连列表项开头的空换行也一起去掉,可以调整正则为 r'^\n//POINTER.+?(?=\n)',通过 ^ 锚定行首,精准匹配开头的目标内容。


内容的提问来源于stack exchange,提问作者Murow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:09:11