python - 为什么在 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', '']
我知道我可以简单地手动删除那些空字符串,但是有什么聪明的方法可以摆脱它们吗?
解决方案
正则表达式单独匹配)
,.
和(
。由于它们在输入中彼此相邻,因此它们之间有一个空字符串,因此结果包含那些空字符串。
如果要将一系列分隔符视为单个分隔符,+
请向正则表达式添加一个量词,以便将它们作为一个序列进行匹配。
re.split('[|().]+', x)
开头的空字符串是因为第一个之前的空字符串(
。同样,末尾的空字符串来自输入中最后一个之后的空字符串)
。我认为没有一种简单的方法可以防止这些,只需将它们从结果中删除即可。
推荐阅读
- javascript - 如何更新多个角色的权限?
- arrays - 在 main 中声明一个固定长度的二维数组时出现分段错误
- pandas - matplotlib.axis.axes 体积的 mplfinance 错误
- python - 当我的乌龟撞到精灵时,如何让我的游戏重置?
- laravel - 在laravel中不属于属于关系的地方
- javascript - 在为多管道分支作业重建时如何在詹金斯中添加单选按钮
- php - 将 php 生成的 JSON 字符串存储在 CSV 文件中
- unit-testing - Rust 测试甚至无法运行
- javascript - Azure 事件中心侦听事件
- javascript - 为什么 preventDefault() 在特定情况下不起作用?