繁体   English   中英

给定一个字符串如何在python中找到所有非空白子字符串的开始和结束索引

[英]Given a string how to find start and end index of all non-whitespace substrings in python

给定一个字符串:

?           ^^^^    ^^^  --

如何在第一个字符之后找到所有子字符串的开始和结束索引?

预期输出: (12,15), (20,22), (25,26)

我尝试了以下操作,但它只适用于第一个子字符串,而不适用于其余的:

string = '?           ^^^^    ^^^  --'
index = len(string ) - len(string .lstrip())

使用正则表达式匹配任何非空白序列。 Match对象包含每个匹配项的开始和结束索引。

import re
string = '?           ^^^^    ^^^  --'
result = [(m.start(), m.end()-1) for m in re.finditer(r'\S+', string)][1:]

[1:]删除了? 一开始。

我不得不从m.end()减去 1,因为它指向匹配的索引(这样使用开始和结束作为范围将获得整个匹配)。

如果第一个子串可以紧跟在? ,您需要先对字符串进行切片,然后将开始索引加 1 而不是从结束索引中减去,以调整缺少的第一个字符。

result = [(m.start()+1, m.end()) for m in re.finditer(r'\S+', string[1:])]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM