我有以下代码
listnew= ['E-Textbooks','Dynamic', 'Case', 'Management', '(', 'DCM', ')'].
nounbreak = list(itertools.chain(*[re.findall(r"\b\w+\b(?![\(\w+\)])", i) for i in listnew]))
而上面的代码成功地删除了“-”甚至“/”。不知怎的,它不能忽略括号里的词
理想的输出是
['E', 'Textbooks','Dynamic', 'Case', 'Management']
如何调整上述正则表达式本身以呈现上述所需的输出?你知道吗
您的问题是regex单独查看每个list元素—它无法“看到”在它查看的当前元素之前/之后有
"("
和")"
元素。你知道吗我建议事先清理你的名单:
输出:
如果您只有简短的列表-您也可以
' '.join(..)
它们并清除括号内的字符串-请参阅f.e.Regular expression to return text between parenthesis了解如何完成此操作并将其从字符串中删除。你知道吗这是一个仅演示正则表达式的稀疏解决方案。
基本上是在非单词上加入数组,在本例中是逗号,然后
使用findall在其上运行正则表达式。
括号元素将是可以过滤的空字符串
通过列表压缩。你知道吗
正则表达式:
Python代码:
相关问题 更多 >
编程相关推荐