我在官方Python文档中看到了以下声明:str.upper().isupper() might be False有人可以解释一下吗?
3 回答
GCT1015
TA贡献1827条经验 获得超4个赞
如果字符串是数字或由不带大写变体的字符组成(特殊字符等),例如:
>>> '42'.upper().isupper()
False
>>> '-'.upper().isupper()
False
和预期的一样:
>>> '42a'.upper().isupper()
True
请注意,因为许多Unicode字符都有一些奇怪的行为
RISEBY
TA贡献1856条经验 获得超5个赞
他们陈述的更多背景:
如果s包含无大小写的字符,或者结果字符的Unicode类别不是“ Lu”(字母大写),而是例如“ Lt”(字母大写),则str.upper()。isupper()可能为False。 。
无大小写字符的示例:
>>> '1'.upper().isupper()
False
炎炎设计
TA贡献1808条经验 获得超4个赞
我认为,isupper
/islower
函数在python中已损坏。首先,他们使用了“ cased”的错误定义。Unicode中有很多具有大写/小写变体的符号,但不属于此L
类别。例如,Ⓐ
显然是大写的,并且确实具有小写的等价项ⓐ
,但是"Ⓐ".isupper()
在python中为False。有关更多详细信息,请参见此错误报告。
其次,有一个逻辑上的错误。isupper
与“所有大小写的字符都在此字符串的上方”相同,并且如果没有大小写的字符,则应返回True,而不是False,就像内置字符一样all()
(“所有独角兽都是红色的”)。这样,可以容易地避免所讨论的混乱。
添加回答
举报
0/150
提交
取消