我有类似的代码
a = "*abc*bbc"
a.split("*")#['','abc','bbc']
#i need ["*","abc","*","bbc"]
a = "abc*bbc"
a.split("*")#['abc','bbc']
#i need ["abc","*","bbc"]
如何在 python split 函数或 正则表达式 或 分区 中获取带分隔符的列表?
我正在使用 python 2.7 ,windows
最佳答案
您需要使用带有分隔符的正则表达式作为一个组并忽略空字符串,就像这样
>>> [item for item in re.split(r"(\*)", "abc*bbc") if item]
['abc', '*', 'bbc']
>>> [item for item in re.split(r"(\*)", "*abc*bbc") if item]
['*', 'abc', '*', 'bbc']
注 1: 需要用
*
转义 \
,因为 RegEx 对 *
有特殊意义。因此,您需要告诉 RegEx 引擎 *
应该被视为正常字符。注 2: 当您在分隔符位于开头或结尾的位置拆分字符串时,您将得到一个空字符串。检查 this question 以了解其背后的原因。