为什么 isupper() 函数在 if 条件下不起作用?

Why isupper() function doesnt work in if condition?

我的代码如下:


import re

lst=[]

b = [('to', 1), ('Me', 2), ('And', 3), ('one', 5), ('listen', 6), ('up', 7)]

#print(type(b[2][0]))
count = 0 
for i in range(len(b)):
    
    if b[i][0].isupper():
        count = count + 1

        r = re.findall('([A-Z][a-z]+)', b[i][0])
        print(r)

print(count)

我想在结果中看到大写的单词,例如:

["Me"]
["And"]

但我什么也没得到,并且计数显示大写单词的数量为 0!

奇怪的是,如果我使用 islower() 它会起作用,并且会显示所有未大写的单词!


import re

lst=[]

b = [('to', 1), ('Me', 2), ('And', 3), ('one', 5), ('listen', 6), ('up', 7)]

#print(type(b[2][0]))
count = 0 
for i in range(len(b)):
    
    if b[i][0].islower():
        count = count + 1

        r = re.findall('([a-z]+)', b[i][0])
        print(r)

print(count)  



我该如何解决这个问题?

使用 istitle 代替 isupper

import re

lst=[]

b = [('to', 1), ('Me', 2), ('And', 3), ('one', 5), ('listen', 6), ('up', 7)]

#print(type(b[2][0]))
count = 0 
for i in range(len(b)):
    
    if b[i][0].istitle():
        count = count + 1

        r = re.findall('([a-z]+)', b[i][0])
        print(r)

print(count) 

islower 有效,因为 每个 字符 'one' 都是小型大写字母

isupper 不起作用,因为 'And' 中的每个 字符并非大写

要仅检查 第一个 字符是否为大写字母,请使用 istitle

此外,还有多项增强功能需要实施:

  • for 单词数组循环
  • 不要使用正则表达式并使用达到相同目的的 istitle
lst=[]
b = [('to', 1), ('Me', 2), ('And', 3), ('one', 5), ('listen', 6), ('up', 7)]

for word, _ in b:
    if word.istitle():
        lst.append(word)

print(lst)