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

Pandas regex=True替换部分单词问题:需实现整词翻译替换

解决Pandas中德语词汇整词替换的问题

当前你的Pandas代码在替换德语词汇时,因默认正则匹配会命中子串,导致翻译结果错误:

  • Schlauchanschluss被错误替换为hoseanschluss(匹配了子串Schlauch)
  • Anschlussleitung被错误替换为adapter plateleitung(匹配了子串Anschluss)

要实现整词/整短语替换,需解决两个核心问题:确保长词汇优先匹配、用正则边界限定完整词汇的匹配范围。

修改后的代码

import pandas as pd
import re

# 读取输入文件
text = pd.read_csv("TranslationInput.csv", sep=';', keep_default_na=False)
change = pd.read_csv("germanTranslation.csv", sep='\s*:\s*')

# 为德语词汇构建适配的正则匹配模式
def build_regex_pattern(german_term):
    # 处理带空格的多词短语,匹配前后非单词字符或字符串首尾
    if ' ' in german_term:
        return fr'(?:^|\W){re.escape(german_term)}(?:\W|$)'
    # 处理单个单词,使用单词边界确保整词匹配
    else:
        return fr'\b{re.escape(german_term)}\b'

# 按德语词汇长度降序排序,确保长词先被匹配,避免短词替换长词的子串
change = change.assign(term_length=change['german'].str.len()).sort_values('term_length', ascending=False).drop('term_length', axis=1)

# 构建替换字典:键为正则模式,值为英文翻译
translation_dict = {build_regex_pattern(row['german']): row['english'] for _, row in change.iterrows()}

# 自定义替换函数,保留原文本的分隔符格式
def translate_text(s):
    for pattern, replacement in translation_dict.items():
        # 替换时保留原有的前后符号(如冒号、空格),只替换核心词汇
        s = re.sub(pattern, lambda match: match.group(0).replace(match.group(0).strip(), replacement), s)
    return s

# 执行翻译并赋值到目标列
text['english'] = text['inputcolumn'].apply(translate_text)
print(text['english'])

代码关键说明

  1. 长词优先排序:
    把Schlauchanschluss这类长词汇放在Schlauch前面处理,从根本避免短词汇提前替换长词中的子串。
  2. 正则边界适配:
    • 单词汇用\b(单词边界),确保只有独立的Schlauch才会被替换,不会命中Schlauchanschluss里的子串。
    • 多词短语(如Warnung vor Handverletzungen)用(?:^|\W)和(?:\W|$)限定范围,确保整个短语作为整体被匹配。
  3. 格式保留:
    使用lambda替换函数,只替换匹配到的核心词汇,保留原文本中的冒号、空格等分隔符,保证输出格式和原文本一致。

最终输出结果

0    warning sign: hand injury warning
1                     hose connection
2                    connecting cable
Name: english, dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:22:12