【问题标题】:How do I better use the translate function?如何更好地使用翻译功能?
【发布时间】:2018-08-28 05:08:56
【问题描述】:

如果我想在多个 unicode 字符上使用translate,例如:

'banana'.translate({ord('ba'):u'cd'})

我该怎么做? ord 仅适用于一个角色。那么是什么让这种情况发生呢?

注意:How to replace multiple substrings of a string? 中解释的解决方案不是 Python3 兼容的解决方案。我尝试按照iteritems in Python 修改iteritems,但无法使其正常工作。我是 python 新手,不知道怎么做。

【问题讨论】:

  • 我不认为你可以,遗憾的是...... translate 是针对字符替换优化的,而不是子字符串替换。
  • 我明白了。但是,如果我想有替代实现,那会是什么?我怎样才能达到这样的结果?
  • 只是这个替代品吗?然后banana.replace('ba', 'cd').
  • 谢谢。但是,我正在寻找多个替代品。
  • 不清楚是要将“ba”替换为“cd”还是将“b”替换为“c”以及将“a”替换为“d”或其他内容...

标签: python string translate ord


【解决方案1】:

您可能想要构建自己的函数,模拟翻译行为:

def trans_mock(string, **kwargs):
    for k,v in kwargs.items():
        string= string.replace(k,v)
    return string

kwargs 将是您要替换的字符串:

print trans_mock("banana", ba="cd", na="we") # output: cdwewe

您甚至可能想要sortof 覆盖字符串类并添加 trans_mock 作为方法:

class string(str):
    def trans_mock(self, **kwargs):
        for k,v in kwargs.items():
            print k,v
            self = self.replace(k,v)
        return self

banana = string("banana")
print banana.trans_mock(ba="ct", na="lw") # output: ctlwlw

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2014-09-04
    • 2023-04-04
    • 2021-06-10
    相关资源
    最近更新 更多