def split_with_start_end(strings,start_with,end_with):
'''
建议使用关键词参数的方式输入参数
strings参数为字符串
start_with参数必须为单个字符
end_with参数必须为单个字符,且不同于start_with参数
输出结果为列表
'''
strings_dict={};
start_index=[];
end_index=[];
strings_index=0;
target_str_list=[]
for i in strings:
strings_dict[strings_index]=i
if i==start_with:
start_index.append(strings_index)
if i==end_with:
end_index.append(strings_index)
strings_index+=1
for a in range(len(start_index)):
print(start_index[a],end_index[a])
strs=strings[start_index[a]+1:end_index[a]];print(strs)
target_str_list.append(strs)
return target_str_list
我知道这个自定义函数有冗余,应该就是关于把字符串转成字典那部份的内容了。
刚开始的时候本来打算:
1,先把字符串转成“索引:字符”格式的字典,
2,遇到能够匹配到起止符的,分别将起止符的索引值存进对应的列表中
3,再按照起止符的索引值形成的范围,作为字典的key范围,输出对应的字符,形成起止符之间的字符串,并存入到最终的字符串列表中
做着做着发现,好像并不需要用到遍历字符串时形成的字典,而是可以直接通过文字索引来切割原始字符串。
所以就有了现在这个版本的自定义函数。
ps,这里通过把起始符索引+1,避免了python切割“含头不含尾”特性,所导致的字符串会包含起始符的情况
局限性:
当然,这个自定义函数还有其他很多情况并没有考虑进去。
比如说如果需要多个字符作为起始符该怎么运算,
以及如果把空格设置为了起始符或者终止符,碰上英语字符串应该会非常尴尬等情况。
后续如果有需要,我应该也会继续完善这个自定义函数吧。
也欢迎大家指点拍砖~
m(_ _)m