说我有一个项目颜色对的列表:
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")
问题是我事先不知道每个名称是否包含任何特定颜色,因此我需要检查所有名称以确保我替换了所有内容。
有一个聪明的方法吗?如果可以将颜色的外来名称映射到其英文名称,那将是完美的。
答案 0 :(得分:1)
如果我理解正确,则可以使用list
对dict
进行一次遍历。一个例子:
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'))