首页 > 解决方案 > 为什么 isupper() 函数在 if 条件下不起作用?

问题描述

我的代码看起来像:


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)  



我怎样才能解决这个问题?

标签: pythonpython-3.xuppercaselowercasere

解决方案


使用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) 

推荐阅读