我需要一个翻译,那有一本字典,上面有
's': 'd'
和
'sch': 'b'
.
这是一个粗略的例子,但重点是,当我有一个像"schto"
这样的输入词时,它需要将其替换为"bkr"
,将'sch'
替换为'b'
。但是有一个键's'
,因此它将单词翻译为"dnokr"
,省略并永远不要查找'sch'
,因为这里有一个带有符号's'
的键,它首先在'sch'
之前翻译它。首先用'sch'
键替换输入字,而不是用单独的“s”、“c”和“h”替换输入字,这里有什么解决方法
下面是代码的示例
newdict = {'sch': 'b', 'sh': 'q', 'ch': 'w', 's': 'd', 'c': 'n', 'h': 'o', 't': 'k', 'o': 'r'}
code = input("Type: ")
code = "".join([newdict[w] for w in code])
print(code)
默认情况下,正则表达式是贪婪的。如果您使用的Python版本保证了键值对在字典中的插入顺序,并且插入键值对的方式是先插入较长的键值对,那么类似的方法应该适用于您-
re.sub
要么使用字符串替换匹配项,要么使用可调用的字符串(function/lambda/where),它接受当前匹配项作为参数,并且必须返回一个字符串以替换它:输出:
如果您使用的是Python版本3.4+,那么字典将维护键的插入顺序。因此,您可以使用
str.replace()
在dict.items()
上进行迭代来实现这一点它将基于映射递归地更新字符串。例如,如果
'h'
被'o'
替换,那么'o'
将被'r'
替换其中
my_word
将为您提供所需的字符串'bkr'
这里,由于
dict.items()
保持插入顺序,因此在迭代期间将首先执行首先定义的键。因此,您可以通过在其他键之前声明要赋予优先级的键来定义规则的优先级相关问题 更多 >
编程相关推荐