gpt4 book ai didi

python - 使用一组规则替换字符串中的多个字符

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:29 24 4
gpt4 key购买 nike

将向用户询问 applyRules 中的规则,但它无法正常工作,即 [“character1:substitution”, “character2:substitution”]

当用户输入['b:c','c:d']时,它会打印c,c。但是,当 char 为 b

时,它应该打印 d

该函数将单个字符和一组规则作为列表。

这就是我到目前为止所写的

def applyRules(char, rules):
for rule_list in (rule.split(':') for rule in rules):
char = char.replace(rule_list[0], rule_list[1])
return char

我应该添加什么才能使其正常工作?

最佳答案

如果您有多个规则,这会变得很麻烦。只要您的替换是在单个字符上完成的,您就可以使用 str.translate 轻松完成此操作。然而,这并不能解决链式替换的问题,因此您必须使用 while 循环,该循环运行直到不再有任何更改为止。

def applyRules(string, rules):
mapping = str.maketrans(dict(x.split(':') for x in rules))

while True:
new = string.translate(mapping)
if string == new:
break
string = new

return new
<小时/>
In [1308]: applyRules('bbbbb', ['b:c', 'c:d'])
Out[1308]: 'ddddd'
<小时/>

单个字符替换
对于涉及单个字符的替换,解决方案得以简化。您可以使用带有 get 的字典:

def applyRules(char, rules):
mapping = dict(x.split(':') for x in rules)

while True:
new = mapping.get(char, char)
if char == new:
break
char = new

return new

这应该简单得多。

关于python - 使用一组规则替换字符串中的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46901524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com