Python 中有一个很酷的原生 .split()
方法,可以返回子字符串列表。是否有一种本地方法或至少不是非常恶心的方法来按多个分隔符进行拆分并自动获取子字符串坐标?类似于这样:
"abc? !cde".some_smart_split("!?") -> [("abc", 0, 2), (" ", 4, 4), ("cde", 6, 8)]
当然,我可以编写一些简单的代码。但是我的用例要复杂得多,找到一些简明扼要的东西会很好。
Python 中有一个很酷的原生 .split()
方法,可以返回子字符串列表。是否有一种本地方法或至少不是非常恶心的方法来按多个分隔符进行拆分并自动获取子字符串坐标?类似于这样:
"abc? !cde".some_smart_split("!?") -> [("abc", 0, 2), (" ", 4, 4), ("cde", 6, 8)]
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
获取匹配部分的索引。match.end()-1
)... - Tim Pietzcker