我想向您展示我自己的解决方案。乍一看可能很复杂,但是定义了“基础”之后,应用真的很简单
首先,我将映射定义为元组列表:
our_mapping = [("Northern", "N"),
("Western", "W"),
("Southern", "S"),
("Eastern", "E")]
现在问题来了:我定义了一个工厂函数,它递归地创建了一个 All-In-One 替换函数:
def replacer_factory(mapping):
if len(mapping) < 1:
return lambda x: x
original, replacement = mapping[0]
return lambda x: replacer_factory(mapping[1:])(x.replace(original, replacement))
现在我可以用我的映射创建一个替换函数:
our_replacer = replacer_factory(our_mapping)
然后申请真的很简单:
>>> in_ = "Northern Western Southern Eastern"
>>> out_ = our_replacer(in_)
>>> print in_
Northern Western Southern Eastern
>>> print out_
N W S E
我真的很喜欢我们不需要任何参数来调用our_replacer,所有映射逻辑都隐藏在其中。现在可以轻松定义任意替换器并使用它们。
这里是整个代码:
our_mapping = [("Northern", "N"),
("Western", "W"),
("Southern", "S"),
("Eastern", "E")]
def replacer_factory(mapping):
if len(mapping) < 1:
return lambda x: x
original, replacement = mapping[0]
return lambda x: replacer_factory(mapping[1:])(x.replace(original, replacement))
our_replacer = replacer_factory(our_mapping)
in_ = "Northern Western Southern Eastern"
out_ = our_replacer(in_)
print in_
print out_
我同意这可以被视为“高级” - 所以如果您是新手并且“只想让它工作”,请坚持使用 jabaldonedos 的答案。