如何在python中拆分字符串并使用分隔符得到结果?

2024-09-30 22:13:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的代码

a = "*abc*bbc"
a.split("*")#['','abc','bbc']
#i need ["*","abc","*","bbc"] 
a = "abc*bbc"
a.split("*")#['abc','bbc']
#i need ["abc","*","bbc"]

如何在pythonsplit函数或regexpartition中获取带分隔符的列表? 我使用的是python2.7,windows


Tags: 函数代码列表windowsneedbbcregexsplit
3条回答

使用partition()

a = "abc*bbc"
print (a.partition("*"))

>>> 
('abc', '*', 'bbc')
>>> 

您需要将带有分隔符的RegEx用作一个组,并忽略空字符串,如下所示

>>> [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以了解其背后的原因。你知道吗

import re
x="*abc*bbc"
print [x for x in re.split(r"(\*)",x) if x]

必须使用re.split并对分隔符进行分组。你知道吗

或者

x="*abc*bbc"
print re.findall(r"[^*]+|\*",x)

或通过re.findall

相关问题 更多 >