Python 在字符串中搜索大写字母

Python 在字符串中搜索大写字母,python,Python,我试图找到字符串中的所有大写字母,并输出数组中的characters元素是什么。例如: "PiE" would have an out put of [0, 2] 我注意到,如果有两个相同的大写字母,is将显示为相同的元素。i、 e: "HaH" has an output of [0,0] 以下是我目前的代码: import re pattern = re.compile(r'^[A-Z\d]+$') elemList = [] def capitals(word): pat

我试图找到字符串中的所有大写字母,并输出数组中的characters元素是什么。例如:

"PiE" would have an out put of [0, 2]
我注意到,如果有两个相同的大写字母,is将显示为相同的元素。i、 e:

"HaH" has an output of [0,0] 
以下是我目前的代码:

import re

pattern = re.compile(r'^[A-Z\d]+$')
elemList = []

def capitals(word):
    pattern.match(word)
    for w in word:
        if w != w.lower():
            a = word.index(w)
            elemList.append(a)
    return elemList

谢谢,伙计们

您可以在此处使用列表理解。这个怎么样

elemList=[i代表i,如果字母为.isupper,则为单词中的字母]

这是一份回复:

>>> def find_capitals(word):
...     return [i for i, letter in enumerate(word) if letter.isupper()]
...
>>> find_capitals('PiE')
[0, 2]
>>> find_capitals('HaHaHa')
[0, 2, 4]

这是一个简单的解决方案:

output = []
for i in range(text):
    if text[i].upper() == text[1]:
        output.append(i)
print(output)

我想那会管用的。这可能不是最好的方法,但这是我脑海中第一个想到的想法。

以下似乎是一种使用普通编程概念的直截了当的方法:

def getUpperPositions(str):
    positions = []
    currentPosition = 0
    for c in str:
        if c.isupper():
            positions.append(currentPosition)
        currentPosition += 1
    return positions

print(getUpperPositions("HaH"))
使用re.finditer函数:

import re

s = ' ..HaH soME text heRe ...'
upper_pos = [m.start() for m in re.finditer(r'[A-Z]', s)]
print(upper_pos)
输出:

[3, 5, 9, 10, 19]

如果c.islower,只需在单词中使用[i代表i,c]。如您所知,.index为您提供字符串中与argumenttext[1]匹配的第一个索引?为什么文本中总是引用该字符?如何初始化文本?如果我使用类似字符串的文本,您的代码将不起作用=HaH@ThomasWeller文本将用您正在使用的任何字符串填充,它是文本[i]而不是文本[1]使用枚举不保留当前位置变量manually@juanpa.arrivillaga当前位置我认为这超出了OP。。。这是学习的最佳时机。这是一个非常基本的python迭代器,不管怎样,如果您正在学习re,您肯定已经知道enumerate。此外,您还应该真正使用islower方法。