python中有一个很酷的原生.split()
,返回子串列表。是否有一种原生的,或者至少不是非常讨厌的方式来分割多个分隔符并自动获得子串坐标?像这样:
"abc? !cde".some_smart_split("!?") -> [("abc", 0, 2), (" ", 4, 4), ("cde", 6, 8)]
当然,我自己也可以写一些天真的代码。但是我的用例要复杂得多,找到简洁的东西会很棒。
答案 0 :(得分:3)
使用re.finditer
:
>>> import re
>>> [(match.group(0), match.start(), match.end())
for match in re.finditer(r'[^!?]+', 'abc? !cde')]
[('abc', 0, 3), (' ', 4, 5), ('cde', 6, 9)]
[^!?]+
以匹配不是!
,?
的字符。re.MatchedObject.group(0)
获取匹配的字符串。re.MatchedObject.start
和re.MatchedObject.end
获取匹配部分的索引。