在Python中,如何通过匹配原始列表中的字符串模式从字符串列表中提取子列表?

7

如何使用匹配模式返回字符串列表的子列表。例如,我有以下字符串列表:

myDict=['a', 'b', 'c', 'on_c_clicked', 'on_s_clicked', 's', 't', 'u', 'x', 'y']

and I want to return:

myOnDict=['on_c_clicked', 'on_s_clicked']

我认为列表推导式可以解决问题,但我对其语法感到困惑。

2个回答

16
import re
myOnDict = [x for x in myDict if re.match(r'on_\w_clicked',x)]

当然,对于这个简单的例子,你甚至不需要正则表达式:

应该去做它...


当然,对于这个简单的例子,你甚至不需要正则表达式:

myOnDict = [x for x in myDict if x.startswith('on')]
或者:
myOnDict = [x for x in myDict if x.endswith('clicked')]

甚至更多:

myOnDict = [x for x in myDict if len(x) > 1]

最后,作为一些未经请求的建议,您可能需要重新考虑您的变量命名。除了PEP8命名规范之外,这些是list对象,不是dict对象。


谢谢!这个完美地运作了。我还在努力理解列表推导式。 - P Moran

0

只是猜测,但是...

for entry in myDict:
    if re.search("^on", entry):
        myOnDict.append(entry)

@mgilson的代码更符合Python风格 :) - Kyle G.
1
另外,我相信 re.search('^on,...)re.match('on',...) 是一样的。 - mgilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接