如何克服lis中删除词间连字符时的不一致性

2024-09-29 22:26:38 发布

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

我使用两组代码来评估在删除列表中单词之间的连字符时哪个更好。你知道吗

第一组代码

listnew=['E-Textbooks']
nounbreak= '-'.join(listnew).split('-')

以上输出为

['E', 'Textbooks']

在第二组中,代码如下所示

listnew=['E-Textbooks']
nounbreak= [" ".join(re.findall(r"\b\w+\b(?![\(\w+\)])", i)) for i in listnew]

上面的输出是

['E Textbooks']

我的问题是,在第二组中,输出是['E textudes'],而在第一组中,输出是['E','textudes']

我想要像这样的输出

['E', 'Textbooks']

从下面的代码本身

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

但不知何故,这并没有发生。不知道我哪里出错了。如果有人能帮上忙就好了。你知道吗


Tags: 代码inre列表for字符单词split
2条回答

这适用于您的一个示例案例:

nounbreak= [(re.findall(r"\b\w+\b(?![\(\w+\)])", i)) for i in listnew]

['E', 'Textbooks']

如果你有其他更复杂的输入数据,看看。。。你知道吗

您可以删除join操作并使用itertools.chain方法,以获得所需的flatten列表。你知道吗

import re
import itertools
listnew = ['E-Textbooks', 'gen-next', 'tri-pack']
nounbreak = list(itertools.chain(*[re.findall(r"\b\w+\b(?![\(\w+\)])", i) for i in listnew]))

输出

['E', 'Textbooks', 'gen', 'next', 'tri', 'pack']

相关问题 更多 >

    热门问题