python - 在 re.split 中使用管道会导致发生额外的拆分
问题描述
我试图用|INDEX|
and分割一个字符串/
。
re.split
可以处理多个分隔符并使用管道分隔每个分隔符,因此需要对其进行转义。
我试着分开:
a = 'Tokenized/0003036v1|INDEX|3847.story.json'
re.split( r"/|\|INDEX|\|" , a)
但是,这导致了额外的空拆分:
['Tokenized', '0003036v1', '', '3847.story.json']
为什么列表中有 4 个项目是空项目,而不是 3 个?
解决方案
代替
re.split( r"/|\|INDEX|\|" , a)
用这个
re.split( r"/|\|INDEX\|" , a)
# splitting based on maxsplit argument to know where the problem is present
>>> re.split( r"/|\|INDEX|\|" , a,1)
['Tokenized', '0003036v1|INDEX|3847.story.json']
>>> re.split( r"/|\|INDEX|\|" , a,2)
['Tokenized', '0003036v1', '|3847.story.json']
>>> re.split( r"/|\|INDEX|\|" , a,3)
['Tokenized', '0003036v1', '', '3847.story.json']
>>> re.split( r"/|\|INDEX\|" , a)
['Tokenized', '0003036v1', '3847.story.json']
推荐阅读
- mysql - 如何使用 mySQL 套接字从一个 docker 容器连接到另一个?
- apache-kafka - Kafka Connect 连接器线程的用途是什么?
- python - Pygame在循环中填充背景时闪烁
- nginx - Nginx 导致 chrome 的“ERR_CONTENT_LENGTH_MISMATCH”和 wget 的“解码接收到的 TLS 数据包时出错。”
- android - 在 Kotlin 中向 recyclerview 添加不同的时间表
- elasticsearch - 最大总和查询不适用于弹性搜索
- xcode - Xcode 内存编辑器
- php - Laravel 中不存在目标类 [App\Http\Controllers\X]
- html - 动画汉堡切换按钮无法正常工作
- node.js - Laravel Mix: npm run dev 和 npm run watch error-> configuration.loader 应该是一个对象