如何在python中的字符串中找到第一个非空白字符的索引?

Kau*_*hik 5 python string

场景:

>>> a='   Hello world'
index = 3
Run Code Online (Sandbox Code Playgroud)

在这种情况下,“ H”索引为“ 3”。但是我需要一个更通用的方法,这样对于任何字符串变量'a'我都需要知道第一个字符的索引?

替代方案:

>>> a='\tHello world'
index = 1
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 6

如果您是说第一个非空白字符,那么我将使用类似这样的方法...

>>> a='   Hello world'
>>> len(a) - len(a.lstrip())
3
Run Code Online (Sandbox Code Playgroud)

另一个有趣的地方:

>>> sum(1 for _ in itertools.takewhile(str.isspace,a))
3
Run Code Online (Sandbox Code Playgroud)

但是我敢打赌,第一个版本会更快,因为它实际上只在C语言中执行此精确循环—当然,完成后需要构造一个新字符串,但这实际上是免费的。


为了完整起见,如果字符串为空或由完全空白组成,则这两个字符串都将返回len(a)(如果您尝试使用它编制索引,则无效...)

>>> a = "foobar"
>>> a[len(a)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)

  • @karthik您应该在问题中提到这一点。见另一个答案。 (2认同)