如何查找字母(来自字母表)在字符串中第一次出现的位置?

2024-05-03 14:21:19 发布

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

例如,如果字符串是

s = "##catgiraffeapluscompscI"

由于此字符串中出现的第一个字母位于位置2(^{),如何将输出设置为2

我还希望它能够适用于不同的字符串(比如函数),它们的第一个字母可能不是c,所以我不希望

s.find('c')

Tags: 函数字符串字母plusfindcompscicatgiraffea
3条回答

首先查找字母,然后查找其索引

>>> s.find(next(filter(str.isalpha, s)))
2

您可以使用正则表达式搜索第一个字母(a-z或a-z,使用re.I标志),如果找到,则从匹配对象返回start值:

import re

def first_letter(s):
    m = re.search(r'[a-z]', s, re.I)
    if m is not None:
        return m.start()
    return -1

s = "##catgiraffeapluscompscI"
i = first_letter(s)
print(i)

输出:

2

如果您不想导入正则表达式或其他模块:以下仅使用标准库,将忽略所有非字母字符,并使用isalpha()方法为您提供第一个字母字符的位置

foo = "##catgiraffeapluscompscI"

L = len(foo)

vivi = 0
for v in range(1,L):
    if foo[vivi].isalpha():
        print ("First alphabetic character " + foo[vivi] + " at position " + str(vivi))
        break
    vivi = vivi + 1    

输出:

First alphabetic character c at position 2

相关问题 更多 >