Python 中替换已知单词的多个正则表达式的替代方法

Alternative to multiple regexes for replacing known words in Python

在 Python 3 中,我有字符串“up2 left5 right4 down2”。我希望将其转换为“u2 l5 r4 d2”,保留数字。这样做最有效的方法是什么?我想有比 4 个正则表达式更好的方法。

唯一可能的词是"up""down""left"和"right",数字可以是0到999之间的任何数字。我怎样才能有效地替换这4个词用他们的 1 个字符的缩写?

for t in (('up', 'u'), ('down','d'), ('left','l'), ('right', 'r')):
   mystring = mystring.replace(*t)

或者,利用单词的替换始终是其第一个字母这一事实:

for word in ('up','down','left','right'):
    mystring = mystring.replace(word, word[0])

Błotosmętek 解决方案的替代方案(速度会稍微慢一些),您可以使用包含单词作为键并将其首字母作为值的字典:

d = {"up": "u", "down": "d", "left": "l", "right": "r"}

for key, val in d.items():
    s = s.replace(key, val)
import re
s = "up2 left5 right4 down2"
[ l[0][0] + l[1] for l in re.findall(r'([a-z]*)(\d+)', s ) ]

输出:

['u2', 'l5', 'r4', 'd2']