我在我的代码中使用这一行来计算字符串中的大写字母:
text = "Áno"
count = sum(1 for c in text if c.isupper())
此代码返回0,预期为1.(因为Á是大写的) 如何用unicode字符计算大写字母? 感谢
答案 0 :(得分:4)
对于python 2,你需要添加u
,你的字符串实际上不是unicode:
text = u"Áno"
您也可以将表达式编写为count = sum(c.isupper() for c in text)
,c.isupper()
将返回True或False 1或0。
In [1]: text = "Áno"
In [2]: count = sum(c.isupper() for c in text)
In [3]: count
Out[3]: 0
In [4]: text = u"Áno"
In [5]: count = sum(c.isupper() for c in text)
In [6]: count
Out[6]: 1
In [7]: text = "Áno".decode("utf-8")
In [8]: count = sum(c.isupper() for c in text)
In [9]: count
Out[9]: 1
答案 1 :(得分:0)
在Python 2中,str.isupper()
方法仅适用于 ASCII字符。你几乎肯定有一个Python 2字节串,它将取决于你在那里的确切字节的编码,但它们不会是有效的ASCII字节。
将字符串解码为Unicode值或使用Unicode文字(u'Áno'
),以便unicode.isupper()
可以根据Unicode标准确定大写字符:
>>> u'Áno'[0].isupper()
True
您可能想要阅读Python和Unicode:
答案 2 :(得分:0)
对于英语单词,所有大写字母都有一个模块。如果你把所有的大写字母都放在一个变量中,下面的代码也适用:
import string
a=string.ascii_uppercase
s='ThiS is A tEst'
count=0
for i in s:
if i in a:
count+=1
print(count)