如何解决列表中的python正则表达式组字符串
data="000000002|ROOT |237277309|000000003|ROOT |337277309|000000004|ROOT |437277309|"
除了使用split之外,还有什么办法可以像这样分组,我不使用split('|')的原因是因为split会生成太多列表,当列表太大时会消耗内存:
[[000000002,ROOT,237277309],[000000003,337277309],[000000004,437277309]]
也许是这样的代码:
import re
ROOT count left '|' night digt
解决方法
如何使用这个正则表达式:
(\d+)\|(ROOT)\s*\|(\d+)(?=\|)
完整代码如下:
import re
data="000000002|ROOT |237277309|000000003|ROOT |337277309|000000004|ROOT |437277309|"
print(re.findall(r'(\d+)\|(ROOT)\s*\|(\d+)(?=\|)',data))
输出:[('000000002','ROOT','237277309'),('000000003','337277309'),('000000004','437277309')]
说明:
捕获组是您最好的朋友。通过将每个术语(\d+
和 ROOT
)放在括号中,您可以让正则表达式匹配它们,但也可以单独存储它们的值,从而得到您想要的输出。
快速说明:我使用正向预测 (?=\|)
基本上是为了告诉正则表达式匹配后应该跟一个 |
,但不匹配管道本身.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。