首页 > 解决方案 > 为什么在 python 中使用 re.split() 时会得到那些空字符串?

问题描述

我将一个拆分函数定义为lambda x: re.split('[(|)|.]', x),当我将此函数应用于我的原始字符串时,它总是会生成一些空字符串。例如:

应用于字符串时:

(Type).(Terrorist organization)AND(Involved in attacks).(nine-eleven)

结果是:

['', 'Type', '', '', 'Terrorist organization', 'AND', 'Involved in attacks', '', '', 'nine-eleven', '']

我知道我可以简单地手动删除那些空字符串,但是有什么聪明的方法可以摆脱它们吗?

标签: pythonpython-3.x

解决方案


正则表达式单独匹配),.(。由于它们在输入中彼此相邻,因此它们之间有一个空字符串,因此结果包含那些空字符串。

如果要将一系列分隔符视为单个分隔符,+请向正则表达式添加一个量词,以便将它们作为一个序列进行匹配。

re.split('[|().]+', x)

开头的空字符串是因为第一个之前的空字符串(。同样,末尾的空字符串来自输入中最后一个之后的空字符串)。我认为没有一种简单的方法可以防止这些,只需将它们从结果中删除即可。


推荐阅读