Возврат самого низкого индекса для первого непробельного символа в строке в Python

Что самый короткий путь состоит в том, чтобы сделать это в Python?

string = "   xyz"

должен возвратить индекс = 3

9
задан kmonsoor 14 February 2014 в 10:38
поделиться

6 ответов

>>> s = "   xyz"
>>> len(s) - len(s.lstrip())
3
34
ответ дан 4 December 2019 в 06:14
поделиться

Похоже, бригада «регулярные выражения могут делать все» взяла выходной, поэтому я заполню:

>>> tests = [u'foo', u' foo', u'\xA0foo']
>>> import re
>>> for test in tests:
...     print len(re.match(r"\s*", test, re.UNICODE).group(0))
...
0
1
1
>>>

FWIW: затраченное время - O (the_answer), а не O (len (input_string))

2
ответ дан 4 December 2019 в 06:14
поделиться
>>> next(i for i, j in enumerate('   xyz') if j.strip())
3

или

>>> next(i for i, j in enumerate('   xyz') if j not in string.whitespace)
3

в версиях Python <2.5 вам нужно будет сделать:

(...).next()
6
ответ дан 4 December 2019 в 06:14
поделиться
import re
def prefix_length(s):
   m = re.match('(\s+)', s)
   if m:
      return len(m.group(0))
   return 0
1
ответ дан 4 December 2019 в 06:14
поделиться
>>> string = "   xyz"
>>> next(idx for idx, chr in enumerate(string) if not chr.isspace())
3
-1
ответ дан 4 December 2019 в 06:14
поделиться
>>> string = "   xyz"
>>> map(str.isspace,string).index(False)
3
-1
ответ дан 4 December 2019 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: