使用单词列表翻译成英语

时间:2019-05-27 06:14:10

标签: python replace

说我有一个项目颜色对的列表:

  

Item1红色

     

Item2 red_in_finnish

     

Item3 red_in_polish

     

Item4 blue_in_russian

     

Item5 blue_in_estonian

     

Item6 blue_in_polish

我需要将所有外语的颜色翻译成英语:

  

Item1红色

     

Item2红色

     

Item3红色

     

Item4蓝色

     

Item5蓝色

     

Item6蓝色

在我的实际代码中,我有两种以上的颜色,以及大约十二种不同的数组,其中包含每种颜色的所有外来词。这是我执行替换的当前方式:

red_words = ['red_in_finnish', 'red_in_polish']
blue_words = ['blue_in_russian', 'blue_in_estonian', 'blue_in_polish']

for word in red_words:
   if word in item_name:
      item_name = item_name.replace(word, "red")

问题是我事先不知道每个名称是否包含任何特定颜色,因此我需要检查所有名称以确保我替换了所有内容。

有一个聪明的方法吗?如果可以将颜色的外来名称映射到其英文名称,那将是完美的。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,则可以使用listdict进行一次遍历。一个例子:

red_words = {'red': 'red', # English
             'rojo': 'red', # Spanish
             'rot': 'red', # German
             'rouge': 'red' # French
            }

blue_words = {'blue': 'blue',
              'azul': 'blue',
              'blau': 'blue',
              'bleu': 'blue'
             }

# More colours here...

combined_translations = {**red_words, **blue_words}

data = [('blue_thing', 'bleu'), 
        ('also_blue_thing', 'azul'), 
        ('blueberry', 'blue'),
        ('fire engine', 'red'),
        ('blood', 'rouge'),
        ('tomato', 'rot')]

translated = [(item, combined_translations[colour]) for item, colour in data]

print(translated)

输出:

[('blue_thing', 'blue'), 
 ('also_blue_thing', 'blue'), 
 ('blueberry', 'blue'), 
 ('fire engine', 'red'), 
 ('blood', 'red'), 
 ('tomato', 'red')]

如果您有一个偶然的词在两种源语言中都相同,但是每种词在英语中表示不同的颜色,则此操作将失败。

答案 1 :(得分:1)

您也可以尝试使用字典

item_name = "hello my color is red_in_estonian"
dic = {
    "red_in_estonian"  :  "red",
    "red_in_german"    :  "red",
    "blue_in_estonian" :  "blue",
    "blue_in_german"   :  "blue",
}
for word in item_name.split(" "):
    try:
        translation = dic[word]
        item_name = item_name.replace(word, translation)

    except:
        pass

答案 2 :(得分:0)

您可以使用Goslate (Free Google Translate API)

import goslate
gs = goslate.Goslate()

for word in words:
    print(gs.translate(word, 'en'))