获取lis中的指示字符串

2024-10-02 10:20:25 发布

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

我得到的清单如下:

[Margaret, Peter, Julia-noCP-L,Parker-CP-T, Jessica, Monica-CP-T, Mark, Peter-noCP] 

我要获取字符串中仅包含CP的或对象:

['Parker-CP-T', 'Monica-CP-T']

我是这样做的:

headers = ['Margaret', 'Peter', 'Julia-noCP-L', 'Parker-CP-T', 'Jessica', 'Monica-CP-T', 'Mark, Peter-noCP']

headers_CPs = []
    for i in headers:
            if "CP" in i:
                    headers_CPs.append(i)

filtr = filter(lambda x: x.split('-')[1] != "noCP", headers_CPs)
print filter

我想学习如何写高效的代码。因此,我想问你,你是否有一些想法,如何解决这个简单的任务更容易。也许在一条线上


Tags: 对象字符串inmonicafiltercppeterheaders
2条回答

查看list comprehensions。你可以这样做:

headers_CP = [x for x in headers if 'CP' in x]

这将拉出列表headers中包含字符串“CP”的所有项

一种方法是只接受包含-CP-的项,而不是检查CP是否存在,然后过滤结果。您可以在list comprehension中执行此操作:

[item for item in headers if '-CP-' in item]

如果您不确定分隔符(这里是'-'),您可以用regex检查它

>>> import re
>>> 
>>> headers = ['Margaret', 'Peter', 'Julia-noCP-L', 'Parker-CP-T', 'Jessica', 'Monica-CP-T', 'Mark, Peter-noCP']
>>> [item for item in headers if re.search(r'\bCP\b', item)]
['Parker-CP-T', 'Monica-CP-T']

正则表达式r'\bCP\b'将只匹配被无字字符包围的CP文本(\b是regex中的字边界修饰符)

相关问题 更多 >

    热门问题