【问题标题】:How to check and remove '/' and '-' from a list of words at the same time [duplicate]如何同时从单词列表中检查和删除“/”和“-”[重复]
【发布时间】:2020-03-28 00:29:37
【问题描述】:

我在列表中有以下单词

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']

【问题讨论】:

  • 使用正则表达式
  • 这段代码当前是否运行?我看不到“lisn”是在哪里定义的。
  • 说真的谁用tokanizer的链接结束了这个问题???这不是关于 tokanizing 的问题。
  • 谢谢@Neil,抱歉是打字错误。更正了“lisn”部分。

标签: python python-3.x string list


【解决方案1】:

执行此操作的快速方法是使用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']

【讨论】:

  • @RidhimaKumar 请检查我的更新答案
  • 关于您的上述解决方案。我有一个疑问。当我有 ['Dynamic'、'Case'、'Management'、'('、'DCM'、')'] 类型的列表时。您的解决方案 [" ".join(re.findall(r"\b\w+\b(?![(\w+)])", i)) for i in listx] 不起作用。它返回 ['Dynamic', 'Case', 'Management', '', 'DCM', '']。而理想的输出是 ['Dynamic', 'Case', 'Management']
  • 原始示例中未包含此内容,请尝试:(?![\w\s]*[\)])\w+
  • 是的,你是对的,这在原始示例中没有包含。当我尝试上面提到的类型列表时,这个问题才出现在我身上。您最初的解决方案非常适合我的问题。来到(?![\w\s]*[\)])\w+,我尝试如下(不确定我做得对)[" ".join(re.findall(r"\b\w+\b((?![\w\s]*[\)])\w+)", i)) for i in listx],我得到了所有空白元素['', '', '', '', '', '']。我也希望(?![\w\s]*[\)])\w+ 仍然删除 \ 和 - 如原始问题所述。
  • 上面给出了无效的语法错误,^ 指向 i)。上面的表达式是否也删除了“-”和“/”。当我在[" ".join(re.findall(r"(?![\w\s]*[\)])\w+", i)) for i in listx]` 之后添加这样的额外括号时,我得到输出['Dynamic', 'Case', 'Management', '', 'DCM', '']
猜你喜欢
  • 1970-01-01
  • 2016-04-23
  • 2021-01-11
  • 2013-04-22
  • 2023-03-11
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多