如何在字符串中查找所有要求的字符或组合

时间:2016-03-09 00:02:40

标签: python

我想插入一些文字,并在本文中找到一些选定的字符,每个字母都有索引,例如

" hello world中的所有字母LO!"

2 个答案:

答案 0 :(得分:1)

如果您希望每个字符的索引使用defaultdict,其中键是字母,值是包含该字母出现的索引/索引的列表,您可以使用{{获取每个字符的索引3}}:

s = "hello world!"

from collections import defaultdict
d = defaultdict(list)


for ind, ch in enumerate(s):
    d[ch].append(ind)

然后使用字母

查找索引查找
In [46]: d["o"]
Out[46]: [4, 7]

In [47]: d["l"]
Out[47]: [2, 3, 9]

如果您只想要特定字母的索引,可以使用enumerate:

再次使用list comp
inds = [ind for ind, ch in enumerate(s) if ch == "o" ]

对于你的逻辑你需要从索引+ 1:

 string.find('o', index + 1)

如果不这样做,您将只是在同一个索引处找到相同的字母并无限循环。

如果要替换字母,请使用dict创建映射并使用dict.get进行替换:

d = {"A": "E", "B": "X", "C": "M"}
s = "BACK"
print("".join([d.get(ch, ch) for ch in s]))

答案 1 :(得分:0)

我同意@Padraic Cunningham所说的一切(+1)。要更改某些字母的字母,您可以创建一个使用替换方法的函数。

def modify(string):
    string = string.lower()  # changes all letters to lowercase
    string = string.replace("a","e")  # changes 'a' to 'e'
    string = string.replace("b","x")  # changes 'b' to 'x'
    string = string.replace("c","m")  # changes 'c' to 'm'
    return string


>>> text = "Beyonce is awesome!"
>>> print text
Beyonce is awesome!

>>> text = modify(text)
>>> print text
xeyonme is ewesome!