我正在编写的这个程序收到一串不同大小的字符串和不同数量的括号,这些字符串可以容纳不同大小的字符。
例如:wysextplwqpvipxdv [srzvtwbfzqtspxnethm] syqbzgtboxxzpwr
我希望能够将此字符串切片到包含括号中不包含的所有部分的字符串的列表中。
例如
list[0] = wysextplwqpvipxdv
list[1] =syqbzgtboxxzpwr
我知道string.slice,我读过这个:Explain Python's slice notation
然而,我无法考虑将其纳入代码的方式
挑战是不知道有多少括号,还能够将字符串剪切到列表中。
答案 0 :(得分:11)
在括号(非贪婪)正则表达式上使用re.split
:
import re
s = "wysextplwqpvipxdv[srzvtwbfzqtspxnethm]syqbzgtboxxzpwr"
toks = re.split("\[.*?\]",s)
print(toks)
结果:
['wysextplwqpvipxdv', 'syqbzgtboxxzpwr']
警告:如果括号嵌套,则不起作用。在这种情况下,您必须使用更复杂的解析器,如pyparsing
。
编辑:在这种情况下,可以使用正则表达式进行嵌套管理,因为我们只考虑括号外的级别。 regex to get all text outside of brackets的新答案之一就是这样做。