为了账号安全,请及时绑定邮箱和手机立即绑定

str.upper()。isupper()可能为False

str.upper()。isupper()可能为False

HUX布斯 2021-03-22 18:19:41
我在官方Python文档中看到了以下声明:str.upper().isupper() might be False有人可以解释一下吗?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

如果字符串是数字或由不带大写变体的字符组成(特殊字符等),例如:


>>> '42'.upper().isupper()

False

>>> '-'.upper().isupper()

False

和预期的一样:


>>> '42a'.upper().isupper()

True

请注意,因为许多Unicode字符都有一些奇怪的行为


查看完整回答
反对 回复 2021-03-23
?
RISEBY

TA贡献1856条经验 获得超5个赞

他们陈述的更多背景:


如果s包含无大小写的字符,或者结果字符的Unicode类别不是“ Lu”(字母大写),而是例如“ Lt”(字母大写),则str.upper()。isupper()可能为False。 。


无大小写字符的示例:


>>> '1'.upper().isupper()

False


查看完整回答
反对 回复 2021-03-23
?
炎炎设计

TA贡献1808条经验 获得超4个赞

我认为,isupper/islower函数在python中已损坏。首先,他们使用了“ cased”的错误定义。Unicode中有很多具有大写/小写变体的符号,但不属于此L类别。例如,显然是大写的,并且确实具有小写的等价项,但是"Ⓐ".isupper()在python中为False。有关更多详细信息,请参见此错误报告

其次,有一个逻辑上的错误。isupper与“所有大小写的字符都在此字符串的上方”相同,并且如果没有大小写的字符,则应返回True,而不是False,就像内置字符一样all()(“所有独角兽都是红色的”)。这样,可以容易地避免所讨论的混乱。


查看完整回答
反对 回复 2021-03-23
  • 3 回答
  • 0 关注
  • 357 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信