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