如何在Python中找到一个字符的位置并按相反的顺序列出位置?

2024-06-28 20:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,如何获得字符串中字符的位置,并以相反的顺序列出位置?另外,我如何使它在字符串中同时查找大写和小写字符?在

例如:如果我输入AvaCdefh,然后查找“a”(大写和小写),并返回a在初始字符串中的位置。在本例中,“a”位于0和2的位置,那么如何使python返回为“20”(带空格)?在


Tags: 字符串顺序字符空格小写大写本例avacdefh
2条回答

使用re模块很容易实现这一点:

import re
x = "AvaCdefh"
" ".join([str(m.start()) for m in re.finditer("[Aa]",x)][::-1])

。。。产生:

^{pr2}$

在使用How can I reverse a list in python?的第二个答案中描述的方法构造字符串之前,该列表被反转。在

您可以使用string.index()来查找第一个字符。在

w= "AvaCdefh"

将字符串改为大写

^{pr2}$

将字符串改为小写

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')

相关问题 更多 >