【问题标题】:How to find certain letters in a string when there are multiple?当有多个时如何在字符串中找到某些字母?
【发布时间】:2015-10-05 03:28:08
【问题描述】:

我希望能够在字符串中挑选出某些字母,但需要能够获得多个而不是第一个的位置(Python)。我目前有这个代码:

word=apple #just and example
character=input("Take a guess")
if character == "a":
    place=word.find("a")
elif character == "b":
    place=word.find("b")
elif character == "c":
    place=word.find("c")
elif character == "d":
    place=word.find("d")
elif character == "e":
    place=word.find("e")
elif character == "f":
    place=word.find("f")
elif character == "g":
    place=word.find("g")
elif character == "h":
    place=word.find("h")
elif character == "i":
    place=word.find("i")
elif character == "j":
    place=word.find("j")
elif character == "k":
    place=word.find("k")
elif character == "l":
    place=word.find("l")
elif character == "m":
    place=word.find("m")
elif character == "n":
    place=word.find("n")
elif character == "o":
    place=word.find("o")
elif character == "p":
    place=word.find("p")
elif character == "q":
    place=word.find("q")
elif character == "r":
    place=word.find("r")
elif character == "s":
    place=word.find("s")
elif character == "t":
    place=word.find("t")
elif character == "u":
    place=word.find("u")
elif character == "v":
    place=word.find("v")
elif character == "x":
    place=word.find("w")
elif character == "w":
    place=word.find("x")
elif character == "y":
    place=word.find("y")
else:
    place=word.find("z")

这可以找到一个字母的位置,但是如果我想找到两个 p 就行不通了,它只会告诉我第一个字母的位置。所以我真正想知道的是是否有一些循环我可以通过它来查找字母并将它们设置为两个不同的变量,例如“place”和“place2”,或者我是否必须多次使用相同的东西对于每个单独的起点。

【问题讨论】:

  • 首先,使用place = word.find(character)即可。这将为您节省大量代码。此外,您缺少 "apple" 周围的引号。
  • 是的,对不起,我在实际代码中正确,只是没有复制和粘贴前两行。而且我没想到在那里使用字符变量。谢谢!

标签: python


【解决方案1】:

您可以使用re.finditer() 来获取所有出现的子字符串:

 >>> import re

 >>> word = "apple" #just and example
 >>> character = input("Take a guess: ")
 >>> for occurrence in re.finditer(character, word):
 ...     print('character: {}, {}'.format(character, occurrence.start())) 

【讨论】:

    【解决方案2】:

    正则表达式是一个强大的工具。但是,使用正则表达式进行简单的字符串文字搜索会产生相当大的开销。

    这是一个简单的替代方法,重复调用 str.find 直到找到所有匹配项:

    def findall(mainstring, substring):
        pos = -1
        while True:
            pos = mainstring.find(substring, pos+1)
            if pos == -1: 
                break
            yield pos 
    
    for occurence in findall("apple", "p"):
        print(occurence)
    # prints: 1 2
    

    【讨论】:

      猜你喜欢
      • 2020-03-19
      • 1970-01-01
      • 2017-07-11
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多