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

如何修改Python代码将CSV中l[5]列数字串替换为l[6]列对应值

问题排查与修复方案

原代码存在的问题

  • 正则表达式规则不匹配需求:原正则r'_[\d]{19}'要求下划线后必须跟19位数字,但你的需求是匹配下划线加任意长度数字(比如示例的_58982只有5位),规则完全不匹配导致判断永远不生效
  • 缩进错误:Python对缩进敏感,原代码中if语句没有在try代码块下正确缩进,else代码块的缩进也和对应if不匹配,会直接报语法错误
  • 打印语句占位符无传参:两个print的{}占位符没有传入对应行号参数,运行会输出不完整日志
  • 正则匹配范围不准确:没有限制完整匹配,若l[5]开头是下划线加数字但后面还有其他字符也会被误匹配,不符合需求

修复后代码

import re # 确认代码顶部已导入re库

ret = []
# 增加行号计数,方便日志定位问题
for line_no, l in enumerate(self.lines[1:], start=2):
    try:
        # 正则修改为匹配「整个字符串是下划线加任意位数数字」的格式
        if re.match(r'^_\d+$', l[5]):
            print(f"Processing Line No : {line_no}")
            s = Sample(
                verified=True,
                count=l[1],
                intent=l[6].replace(':','_').replace('-', '_'),
                token_tree=TokenTree(l[8]),
                protected=self.protected
            )
        else:
            s = Sample(
                verified=True,
                count=l[1],
                intent=l[5].replace(':','_').replace('-', '_'),
                token_tree=TokenTree(l[8]),
                protected=self.protected
            )
    except Exception as ex:
        raise ValueError(f"Bad sample definition: {l} (check tabs)")
    else:
        print(f"Processing 5 No : {line_no}")
        ret.append(s)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:02