![](/img/trans.png)
[英]how to find the index of the first non-whitespace character in a string in 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.