我得到一个具有这种模式的字符串:
[blah blah blah] [more blah] some text
我想将字符串拆分为三个部分:blah blah blah
,more blah
和some text
。
执行此操作的粗略方法是使用mystr.split('] ')
,然后从前两个元素中删除前导[
。是否有更好的性能(需要非常快速地为成千上万的字符串执行此操作)。
答案 0 :(得分:5)
如果您知道文本将采用该格式,则可以使用正则表达式提取文本。为了提高效率,您可以预编译正则表达式,然后在匹配时重复使用它。
prog = re.compile('\[([^\]]*)\]\s*\[([^\]]*)\]\s*(.*)')
for mystr in string_list:
result = prog.match(mystr)
groups = result.groups()
如果你想要一个关于正则表达式本身的解释,你可以得到一个using this tool。
答案 1 :(得分:1)
您可以使用正则表达式来拆分要省略字符的位置:
>>> import re
>>> s = '[...] [...] ...'
>>> re.split(r'\[|\] *\[?', s)[1:]
['...', '...', '...']