查找字符串中第一个数字的索引

2024-05-19 03:01:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根绳子

"xdtwkeltjwlkejt7wthwk89lk"

如何获取字符串中第一个数字的索引?


Tags: 字符串数字绳子xdtwkeltjwlkejt7wthwk89lk
3条回答

对于解析器来说似乎是个不错的工作:

>>> from simpleparse.parser import Parser
>>> s = 'xdtwkeltjwlkejt7wthwk89lk'
>>> grammar = """
... integer := [0-9]+
... <alpha> := -integer+
... all     := (integer/alpha)+
... """
>>> parser = Parser(grammar, 'all')
>>> parser.parse(s)
(1, [('integer', 15, 16, None), ('integer', 21, 23, None)], 25)
>>> [ int(s[x[1]:x[2]]) for x in parser.parse(s)[1] ]
[7, 89]

使用^{}

>>> import re
>>> s1 = "thishasadigit4here"
>>> m = re.search(r"\d", s1)
>>> if m is not None:
...     print("Digit found at position", m.start())
... else:
...     print("No digit in that string")
... 
Digit found at position 13

这是一个更好更灵活的方式,regex在这里是过度杀戮。

s = 'xdtwkeltjwlkejt7wthwk89lk'

for i, c in enumerate(s):
    if c.isdigit():
        print(i)
        break

输出:

15

要获取所有数字及其位置,一个简单的表达式将

>>> [(i, c) for i, c in enumerate('xdtwkeltjwlkejt7wthwk89lk') if c.isdigit()]
[(15, '7'), (21, '8'), (22, '9')]

或者你可以创建一个数字及其最后位置的dict

>>> {c: i for i, c in enumerate('xdtwkeltjwlkejt7wthwk89lk') if c.isdigit()}
{'9': 22, '8': 21, '7': 15}

相关问题 更多 >

    热门问题