4

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

[blah blah blah] [more blah] some text

我想将字符串分成三部分blah blah blahmore blahsome text

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

4

2 回答 2

5

如果您知道它将采用该格式,则可以使用正则表达式来提取文本。为了提高效率,您可以预编译正则表达式,然后在匹配时重复使用它。

prog = re.compile('\[([^\]]*)\]\s*\[([^\]]*)\]\s*(.*)')

for mystr in string_list:
    result = prog.match(mystr)
    groups = result.groups()

如果您想了解正则表达式本身的说明,您可以使用此工具获得一个。

于 2013-05-22T21:08:45.667 回答
1

您可以使用正则表达式来拆分要省略字符的位置:

>>> import re
>>> s = '[...] [...] ...'
>>> re.split(r'\[|\] *\[?', s)[1:]
['...', '...', '...']
于 2013-05-22T21:33:26.737 回答