【发布时间】:2021-10-25 12:35:00
【问题描述】:
假设我有以下列表:
l1 = ['apples', ' bananas' , ' coconuts', ' dates figs guavas', 'lemons ', 'mangoes ']
提取每个单词并丢弃多余空格的最佳方法是什么?
我追求的结果是:
l2 = ['apples', 'bananas', 'coconuts', 'dates', 'figs', 'guavas', 'lemons', 'mangoes']
到目前为止我尝试过的是:
clean_l = []
# Get rid of white spaces
for item in l1:
clean = re.sub("(?m)^\s+", "", item)
clean_l.append(clean)
但这会返回与l1 完全相同的内容。
【问题讨论】:
-
一方面,您的正则表达式明确地只在字符串的 start 处找到空格。
-
你不妨使用
" ".join(l1).split()。 -
最简单的正则表达式可能是
re.findall:[w for string in l1 for w in re.findall("\w+", string)] -
@WiktorStribiżew 你错过了一条,我猜
-
@DaniMesejo 输出:
['apples', 'bananas', 'coconuts', 'dates', 'figs', 'guavas', 'lemons', 'mangoes']