字符串中的索引定位符

时间:2018-06-29 04:42:16

标签: python string python-3.x

我需要第一个开放括号和最后一个封闭括号的索引...而不使用任何循环。

示例:

string='a(bcdefghijkl(mno)p)q'

2 个答案:

答案 0 :(得分:2)

此函数查找第一个开始和最后一个结束括号的索引:

def find_first_last(string, first='(', last=')'):
    return (
        string.index(first),
        len(string) - string[::-1].index(last)
    )

print(find_first_last('a(bcdefghijkl(mno)p)q'))
# (1, 20)

通过使用index字符串方法执行此操作,该方法返回字符串中字符的最低索引。对于右括号,它将字符串反转以找到该字符的最后一次出现。

答案 1 :(得分:1)

使用DynamicValuesstr.find查找两个字符的索引。使用str.rfind更容易找到最后一个字符,并且避免了其他方法可能容易出错的错误。还有一个str.rfind的工作方式与此类似。

您是否更喜欢使用str.rindex / str.findstr.rfind / str.index是您希望如何处理缺少str.rindex的问题/ first字符串。如果要例外,请使用last,如果要在返回的元组中使用-1,请使用index

find

输出

def find_first_last(s, first='(', last=')'):
    return s.find(first), s.rfind(last)

print(find_first_last('a(bcdefghijkl(mno)p)q'))
# couple of error cases
print(find_first_last('a(bcdefghijkl(mnopq'))
print(find_first_last('abcdefghijklmno)p)q'))
print(find_first_last('abcdefghijklmnopq'))
print(find_first_last('abcdefgh)(ijklmnopq'))