我想通过索引列表拆分字符串,其中拆分段以一个索引开始,在下一个索引之前结束.
例:
s = 'long string that I want to split up'
indices = [0,5,12,17]
parts = [s[index:] for index in indices]
for part in parts:
print part
Run Code Online (Sandbox Code Playgroud)
这将返回:
长字符串,我想分手了
,我想分裂字符串
,我想分手
我想分手
我想要:
长
串
的是
我要分手
说我有一个字符串:
teststring = "1.3 Hello how are you 1.4 I am fine, thanks 1.2 Hi There 1.5 Great!"
Run Code Online (Sandbox Code Playgroud)
我希望如下:
testlist = ["1.3 Hello how are you", "1.4 I am fine, thanks 1.2 Hi There", "1.5 Great!"]
Run Code Online (Sandbox Code Playgroud)
基本上,仅在增加的数字上进行分割,其中差值为.1(即1.2到1.3).
有没有办法用正则表达式分割它,但只捕获增加的序号?我在python中编写代码,以便为每个代码重复使用自定义re.compile()并且它很好但是非常笨拙.
像这样的东西(其中parts1_temp是字符串中xx数字的给定列表):
parts1_temp = ['1.3','1.4','1.2','1.5']
parts_num = range(int(parts1_temp.split('.')[1]), int(parts1_temp.split('.')[1])+30)
parts_search = ['.'.join([parts1_temp.split('.')[0], str(parts_num_el)]) for parts_num_el in parts_num]
#parts_search should be ['1.3','1.4','1.5',...,'1.32']
for k in range(len(parts_search)-1):
rxtemp = re.compile(r"(?:"+str(parts_search[k])+")([\s\S]*?)(?=(?:"+str(parts_search[k+1])+"))", re.MULTILINE)
parts_fin = [match.group(0) for match in rxtemp.finditer(teststring)]
Run Code Online (Sandbox Code Playgroud)
但是男人是丑陋的.有没有办法在正则表达式中更直接地执行此操作?我想这是有人在某些方面想要正则表达式的功能,但我找不到任何关于如何解决这个问题的想法(也许纯正的正则表达式是不可能的).