Python中的搜索替换模式

2024-10-01 00:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个魔方运动列表和一个快捷方式字典,比如:

mvts = ['U', 'U', 'R', 'Ri', 'L2', ...]
shortcuts = {'UU' : 'U2', 'RRi' : '', ...}

我要做的是根据shortcuts的内容对mvts列表应用“搜索并替换”。你知道吗

下面是示例中的结果:

mvts = ['U2', 'L2', ...]

我使用的是Python3,我不能使用一个没有Python的库。你知道吗

我卡住了。我可以用String上的一些正则表达式来实现这一点,但我不知道如何在我的列表中快速进行搜索。你知道吗


Tags: 示例内容列表string字典魔方python3快捷方式
3条回答

你可以用re.sub

import re

mvts = ['UUU', 'U', 'R', 'Ri', 'L2']
shortcuts = {'UU' : 'U2', 'RRi' : ''}

def do_sub(m):
    for k, v in shortcuts.items():
        m = re.sub(k, v, m)
    return m

[do_sub(m) for m in mvts]

输出:

['U2U', 'U', 'R', 'Ri', 'L2']

我在google上找到了一个好的解决方案:“Search/replace sublist in list Python”。你知道吗

所以我用了这里解释的@latty的解https://stackoverflow.com/a/12898180/2058840。你知道吗

我不得不把字典结构改成:

shortcuts = {'U U' : ['U2'], 'R Ri' : '', ...}

然后:

for (sublist, shortcut) in shortcuts:
    replace_list(mvts, sublist.split(), shortcut) #@latty's function

感谢@martin konecny和@arman的帮助!你知道吗

试试这个:

for i in range(len(mvts)):
      if(mvts[i] in shortcuts):
           mvts[i] = shortcuts[mvts[i]]

注意

如果已经确定字典中存在列表元素,则可以删除if

如果要删除列表中的重复项:

mvts = list(set(mvts))

相关问题 更多 >