Python,在字符串中查找字符的位置

时间:2014-08-03 15:55:09

标签: python

    >>> s.index("r")
    >>> s.find("r")

以上只找到第一个字符。例如:

    >>>s='hello'
    >>>s.find('l')

仅输出2.如果我们想要两个'l'的位置并想要输出

,该怎么办?
    >>>[2, 3]

3 个答案:

答案 0 :(得分:3)

您可以使用列表理解,enumerate,就像这样

>>> [index for index, char in enumerate(s) if char == "l"]
[2, 3]

enumerate函数将给出当前索引以及iterable中的当前项。因此,在每次迭代中,您将获得索引和字符串中的相应字符。我们正在检查字符是l,如果是l,我们会在结果列表中包含index

答案 1 :(得分:0)

thefourtheye的解决方案是最好的,但如果你想要一个不同的方法:

s = raw_input("Enter a string")
c = raw_input("Enter a char to search")

indexes = []
i = 0
while i < len(s):
    if s[i] == c:
        indexes.append(i)
    i += 1
print "{} appears {} times at the following index/indexes {}".format(c,len(indexes),indexes)

答案 2 :(得分:0)

这是将她的答案扩展为正常功能:

def count_chars(string, char):
    results = []
    for index, value in enumerate(string):
        if value == char:
           results.append(index)
    return results

然而,thefourtheye的回答是最好的pythonic答案。列表理解和一般的理解是Python的一个非常重要的部分(也是我最喜欢的部分之一)。我强烈建议你阅读here。在曲线前面没有错: - )。