首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果另一个列表中的字符串稍有不同,那么如何从列表中删除这些字符串?下面是更多的信息

如果另一个列表中的字符串稍有不同,那么如何从列表中删除这些字符串?下面是更多的信息
EN

Stack Overflow用户
提问于 2021-07-09 22:23:04
回答 1查看 39关注 0票数 2

这似乎是一个非常基本的问题,但我想知道,因为这些清单中的项目经常变化,当一个网站被刮.

代码语言:javascript
复制
employees = ['leadership(x)', 'drivers(y)', 'trainers(z)']

其中,x,y,z是这些特定角色中雇员的数量,也是经常变化的值。

如果我知道字符串总是“领导力”、“驱动程序”和“培训员”,只是括号之间的不同之处,我如何才能动态删除这些字符串,而不必每周硬编码运行程序呢?

显而易见但不太成功的解决办法是..。

代码语言:javascript
复制
employees = ['leadership(x)', 'drivers(y)', 'trainers(z)']
unwanted = ['leadership(x)', 'drivers(y)', 'trainers(z)']

for i in unwanted:
    if i in employees:
        employees.remove(i)

当然,这是失败的,因为这些值是硬编码的,并且值是一定要更改的,如果有任何帮助的话,我们将非常感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 22:39:05

你可以做这样的事

代码语言:javascript
复制
unwanted_prefixes = ['leadership', 'drivers', 'trainers']
unwanted = [s for s in employees if s.split('(')[0] in unwanted_prefixes]

这将使要删除的内容列表包含以这3个前缀开头的任何字符串,或者不包含其他任何内容,或者紧跟在括号后面。

一个更复杂的解决方案,如果删除您想要的字符串,则遵循大致相同的想法,但使用正则表达式:

代码语言:javascript
复制
import re
unwanted_re = re.compile(r'(leadership|drivers|trainers)\(\d+\)')
unwanted = [x for x in employees if unwanted_re.fullmatch(x)]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68323226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档