为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

心有法竹 2021-03-31 04:19:15
设想:>>> a='   Hello world'index = 3在这种情况下,“ H”索引为“ 3”。但是我需要一个更通用的方法,这样对于任何字符串变量'a'我都需要知道第一个字符的索引?替代方案:>>> a='\tHello world'index = 1
查看完整描述

4 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

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


>>> a='   Hello world'

>>> len(a) - len(a.lstrip())

3

另一个有趣的地方:


>>> sum(1 for _ in itertools.takewhile(str.isspace,a))

3

但是我敢打赌,第一个版本会更快,因为它实际上只在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


查看完整回答
反对 回复 2021-04-01
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

使用regex:


>>> import re

>>> a='   Hello world'

>>> re.search(r'\S',a).start()

3

>>> a='\tHello world'

>>> re.search(r'\S',a).start()

1

>>>

处理字符串为空或仅包含空格的情况的函数:


>>> def func(strs):

...     match = re.search(r'\S',strs)

...     if match:

...         return match.start()

...     else:

...         return 'No character found!'

...     

>>> func('\t\tfoo')

2

>>> func('   foo')

3

>>> func('     ')

'No character found!'

>>> func('')

'No character found!'


查看完整回答
反对 回复 2021-04-01
?
慕少森

TA贡献2019条经验 获得超9个赞

您也可以尝试:


a = '   Hello world'

a.index(a.lstrip()[0])

=> 3

只要字符串包含至少一个非空格字符,它就可以工作。我们可以更小心一点,并在进行以下检查:


a = '    '

-1 if not a or a.isspace() else a.index(a.lstrip()[0])

=> -1


查看完整回答
反对 回复 2021-04-01
  • 4 回答
  • 0 关注
  • 904 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号