Python 在字符串中搜索大写字母
我试图找到字符串中的所有大写字母,并输出数组中的characters元素是什么。例如: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
"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方法。