关于python中的split有很多问题,但我找不到与我的问题相对应的问题.我想拆分一个字符串,但需要为拆分器设置不同的值,具体取决于条件.对于测试用例,我的字符串是"11xx22xx33xxBEGINxx44xx55xxENDxx66xx77".我想以块的形式处理这个字符串,这意味着我想像这样一步一步:
分开'11',用它做点什么
分开'22',用它做点什么
分开'33',用它做点什么
拆分'BEGINxx44xx55xxEND',用它做点什么
分开'66',用它做点什么
分开'77',用它做点什么
我尝试了一个递归函数:
import string
mystring = "11xx22xx33xxBEGINxx44xx55xxENDxx66xx77"
def makechunks(s):
try: splitter
except NameError:
splitter = "xx"
whole = s.split(splitter, 1)
current = whole[0]
try: whole[1]
except NameError:
return
else:
rest = whole[1]
if current.find("BEGIN", 0, 5):
splitter = "END"
else:
splitter = "xx"
makechunks(rest)
print("AA", current, "BB")
makechunks(mystring)
Run Code Online (Sandbox Code Playgroud)
但我得到错误"列表索引超出范围." 也许我的整个方法都存在缺陷,有更好的方法可以实现我想要的目标吗?任何暗示我都会感激不尽.
谢谢!
您可以使用正则表达式执行此操作:
matches = re.findall('(?:^|xx)(BEGIN.*?END|.*?)(?=xx|$)', s)
Run Code Online (Sandbox Code Playgroud)
结果:
['11', '22', '33', 'BEGINxx44xx55xxEND', '66', '77']
Run Code Online (Sandbox Code Playgroud)
看到它在线工作:ideone
归档时间: |
|
查看次数: |
146 次 |
最近记录: |