【问题标题】:Translate/Replace Multiple Letters With Python用 Python 翻译/替换多个字母
【发布时间】:2018-10-15 18:43:31
【问题描述】:

我正在开发一个非常基本的翻译程序。目前它只能处理一个短语中的一个字母。例如,如果我输入“test”,它会脱口而出“yesy”,因为它会将“t”更改为“y”。这是我用来执行此操作的代码:

def translate(phrase):
    translation = ""
    for letter in phrase:
        if letter in "t":
            translation = translation + "y"
        else:
            translation = translation + letter
    return translation




print(translate(input("Enter word: ")))

是否可以添加另一个要翻译的字母。因此,例如在“t”到“y”之上的“e”到“a”。这样它就会吐出“yasy”。

【问题讨论】:

  • 你看过内置的str.translate吗?
  • 是的,很有可能。虽然我不确定这就是你要找的...?
  • my_str.replace(...).replace(...) 怎么样?
  • 是的,考虑到不同程度的变化,网上有很多关于如何做到这一点的例子。请在此处发布之前进行研究。除其他外,请阅读 replacetranslate 方法。

标签: python translate


【解决方案1】:

使用str.replace 有一个更简单的方法:'test'.replace('t','y').replace('e','a')

但是,如果您希望替换越来越多的字母 str.translate 会更有效:

from string import maketrans

trans_from = "te"
trans_to = "ya"
trans_model = maketrans(trans_from, trans_to)

'test'.translate(trans_model)

或者,如果你想保留你的代码,你可以使用elif

def translate(phrase):
    translation = ""
    for letter in phrase:
        if letter in "t":
            translation = translation + "y"
        elif letter in "e":
            translation = translation + "a"
        else:
            translation = translation + letter
    return translation

print(translate(input("Enter word: ")))

【讨论】:

  • 您介意正确缩进代码的“elif”部分吗?当我手动缩进它时,我似乎无法让它工作。当我输入“test”时,它会出现“yayt”。
  • @Mihkel 现在缩进正确
  • 完美运行,感谢您的帮助。
【解决方案2】:

使用字典。

en-gb = {'t':'y', add more here}
def translate(phrase): 
    translation = str()
    for char in phrase:
        translation = translation +   en-gb[char]
    return translation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2016-02-17
    • 1970-01-01
    • 2011-01-15
    • 2012-05-06
    • 2011-12-18
    • 2011-10-20
    相关资源
    最近更新 更多