相关疑难解决方法(0)

按索引列表拆分字符串

我想通过索引列表拆分字符串,其中拆分段以一个索引开始,在下一个索引之前结束.

例:

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)

这将返回:

长字符串,我想分手了
,我想分裂字符串
,我想分手
我想分手

我想要:



的是
我要分手

python split

21
推荐指数
2
解决办法
1万
查看次数

正则表达式使用增加的数字序列Python

说我有一个字符串:

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)

但是男人是丑陋的.有没有办法在正则表达式中更直接地执行此操作?我想这是有人在某些方面想要正则表达式的功能,但我找不到任何关于如何解决这个问题的想法(也许纯正的正则表达式是不可能的).

python regex string sequential

9
推荐指数
1
解决办法
304
查看次数

标签 统计

python ×2

regex ×1

sequential ×1

split ×1

string ×1