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