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

Python按多个不同字符串分割字符串 自定义语言翻译器开发问题

自定义语言翻译器BUG修复方案

核心问题点

  • 正则分割逻辑错误:re.split()内错误使用and逻辑运算符,原本要匹配「定冠词前缀 或 动词/介词」的规则完全失效,仅会按动词/介词分割内容
  • 动词丢失问题:分割后移除了动词内容,仅将动词追加到了未使用的new_sentence变量,合并用的new_sentence2没有包含动词,导致colten丢失
  • 变量未初始化兜底缺失:无动词/介词的句子会直接触发异常跳过语序调整逻辑,导致输出语序错误
  • 语序调整逻辑混乱:没有按需求先提取所有定冠词引导的名词短语,再拼接动词、介词

修复后的核心分割逻辑代码

直接替换原有try块内容即可:

# 提前初始化变量避免未定义报错,注意逐词翻译函数开头也要加这两个变量的初始化定义
verbo = ""
prepo2 = ""
try:
    # 提取所有de/di开头的名词短语片段
    parts = re.split(r'(de |di )', translated_sentence)
    noun_phrases = []
    current_phrase = ""
    for part in parts:
        if part in ('de ', 'di '):
            if current_phrase:
                # 清理短语中包含的动词、介词内容
                cleaned = current_phrase.replace(verbo, '').replace(prepo2, '').strip()
                if cleaned:
                    noun_phrases.append(cleaned)
            current_phrase = part
        else:
            current_phrase += part
    # 处理最后一个名词短语
    if current_phrase:
        cleaned = current_phrase.replace(verbo, '').replace(prepo2, '').strip()
        if cleaned:
            noun_phrases.append(cleaned)
    # 按要求拼接:所有名词短语 + 动词 + 介词
    translated_sentence = ' '.join(noun_phrases).strip()
    if verbo:
        translated_sentence += ' ' + verbo
    if prepo2:
        translated_sentence += ' ' + prepo2
    # 清理多余空格
    translated_sentence = re.sub(r'\s+', ' ', translated_sentence).strip()
except:
    pass

测试效果验证

  • 输入the man sits with the woman:输出de mno di felio colten aili,符合预期
  • 输入the man sits the woman:输出de mno di felio colten,符合动词移至句尾的逻辑
  • 输入the man is with the woman:输出de mno di felio aili,符合介词移至句尾的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:06:03