将特定模式的字符串拆分为三个部分

时间:2013-05-22 21:04:23

标签: python python-2.7

我得到一个具有这种模式的字符串:

[blah blah blah] [more blah] some text

我想将字符串拆分为三个部分:blah blah blahmore blahsome text

执行此操作的粗略方法是使用mystr.split('] '),然后从前两个元素中删除前导[。是否有更好的性能(需要非常快速地为成千上万的字符串执行此操作)。

2 个答案:

答案 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:]
['...', '...', '...']