如何在python中获取字符串中字符的位置,并按相反的顺序列出位置?另外,如何让它在字符串中查找大写和小写字符?
例如:如果我放入AvaCdefh,我会寻找' a' (包括大写和小写),并在我的初始字符串中返回a的位置。在这个例子中,' a'位于0和2位置,所以如何让python将其返回为' 2 0' (有空间)?
答案 0 :(得分:1)
使用re模块很容易实现:
import re
x = "AvaCdefh"
" ".join([str(m.start()) for m in re.finditer("[Aa]",x)][::-1])
......产生:
'2 0'
在使用How can I reverse a list in python?的第二个答案中描述的方法构造字符串之前,列表是相反的。
答案 1 :(得分:1)
您可以使用string.index()
查找第一个字符。
w= "AvaCdefh"
将字符串更改为大写
print w.upper() #Output: AVACDEFH
将字符串更改为小写
print w.lower() #Output: avacdefh
使用python内置函数找到第一个charchter:
print w.lower().index('a') #Output: 0
print w.index('a') #Output: 2
翻转单词
print w[::-1] #Output: hfedCavA
但你可以使用理解列表来做到这一点:
char='a'
# Finding a character in the word
findChar= [(c,index) for index,c in enumerate(list(w.lower())) if char==c ]
# Finding a character in the reversed word
inverseFindChar = [(c,index) for index,c in enumerate(list(w[::-1].lower())) if char==c ]
print findChar #Output: [('a', 0), ('a', 2)]
print inverseFindChar #Output: [('a', 5), ('a', 7)]
使用lambda的另一种方法。
l = [index for index,c in enumerate(list(w.lower())) if char==c ]
ll= map(lambda x:w[x], l)
print ll #Output: ['A', 'a']
然后,您可以将其作为函数包装:
def findChar(char):
return " ".join([str(index) for index,c in enumerate(list(w.lower())) if char==c ])
def findCharInReversedWord(char):
return " ".join([str(index) for index,c in enumerate(list(w[::-1].lower())) if char==c ])
print findChar('a')
print findChar('c')
print findCharInReversedWord('a')