为什么 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)
我的代码如下:
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)