首页 > 解决方案 > 如何同时从单词列表中检查和删除“/”和“-”

问题描述

我在列表中有以下单词

listx=['info/base','tri-gen']

我正在尝试同时删除“/”和“-”。

目前我有两个单独的代码块(如下所述)实现上述

    listx=['info/base','tri-gen']
    if '/' in listx:
        listmain= '/'.join(listx).split('/')
        listmain = list(filter(None, listmain))


    if '-' in listx:   
        listmain= '-'.join(listx).split('-')
        listmain = list(filter(None, listmain))

我如何在单个 if 条件下实现它,或者有没有办法包含许多条件,例如如下

'-','/'.join(listx).split('-','/')

预期产出

listx=['info base','tri gen']

标签: pythonpython-3.xstringlist

解决方案


快速的方法是使用该re模块,它为您提供了正则表达式的魔力。随意阅读文档:https ://docs.python.org/3/library/re.html

import re
listx=['info/base','tri-gen']

[re.sub("\/|\-"," ",i) for i in listx]

输出:

['info base', 'tri gen']

编辑

对于您的评论,我认为您可以在没有 if 语句的情况下逃脱。

此正则表达式将找到您需要的所有单词,同时忽略括号中的单词:

\b\w+\b(?![\(\w+\)])

在工作中看到它:https ://regex101.com/r/YqhJDb/1

你可以实现这样的事情:

[" ".join(re.findall(r"\b\w+\b(?![\(\w+\)])", i)) for i in listx]

输出:

['info base', 'tri gen', 'century tech limited']


推荐阅读