我有以下字符串:
my_string='11AB2AB33'
我想将此字符串写入列表中,因此“AB”是此列表的单个元素,如下所示:
['1', '1', 'AB', '2', 'AB', '3', '3']
我尝试这样做
list(my_string)
但是结果并不是我所期望的:
['1', '1', 'A', 'B', '2', 'A', 'B', '3', '3']
我也尝试了
partition
方法:
list(my_string.partition('AB'))
也没有得到预期的结果
['11', 'AB', '2AB33']
您可以使用 re.findall 代替分割,并与管道
|
匹配 AB 或非空白字符 \S
如果您还想匹配空格,您可以使用 .
而不是 \S
您可以在这里查看比赛。
my_string='11AB2AB33'
print(re.findall(r'AB|\S', my_string))
输出
['1', '1', 'AB', '2', 'AB', '3', '3']
如果您想使用分割,并且只有字符 A-Z 或数字 0-9,您可以使用非字边界来获得右侧直接是 AB 或数字的位置。
您可以在此处查看匹配项
my_string='11AB2AB33'
print(re.split(r"\B(?=AB|\d)", my_string))
输出
['1', '1', 'AB', '2', 'AB', '3', '3']