Python 当'string.swapcase().swapcase()'不等于'string'时?
对于str.swapcase()方法,表示: 返回将大写字符转换为小写字符的字符串副本,反之亦然请注意,s.swapcase().swapcase()==s不一定是真的Python 当'string.swapcase().swapcase()'不等于'string'时?,python,python-3.x,string,character-encoding,character,Python,Python 3.x,String,Character Encoding,Character,对于str.swapcase()方法,表示: 返回将大写字符转换为小写字符的字符串副本,反之亦然请注意,s.swapcase().swapcase()==s不一定是真的 我想不出一个例子,s.swapcase().swapcase()!=有人能想出一个吗?一个简单的例子是: s = "ß" print(s.swapcase().swapcase()) 输出: ss (正确的大写版本为)。发生这种情况的原因是Python不“知道”或不想为每个unicode符号定义大写转换。因此,通过将s.s
我想不出一个例子,
s.swapcase().swapcase()!=有人能想出一个吗?一个简单的例子是:
s = "ß"
print(s.swapcase().swapcase())
输出:
ss
(正确的大写版本为)。发生这种情况的原因是Python不“知道”或不想为每个unicode符号定义大写转换。因此,通过将s.swapcase()
要获得所有这些信息:
find_dif = lambda s: s.swapcase().swapcase() != s
[chr(s) for s in range(100000) if find_dif(chr(s))]
你会得到:
[‘µ’,
'ß',
'İ',
'ı',
'ʼn',
'ſ',
'ǰ',
'ͅ',
'ΐ',
'ΰ',
'ς',
'ϐ',
'ϑ',
'ϕ',
'ϖ',
'ϰ',
'ϱ',
'ϴ',
'ϵ',
'և',
'ᲀ',
'ᲁ',
'ᲂ',
'ᲃ',
'ᲄ',
'ᲅ',
'ᲆ',
'ᲇ',
'ᲈ',
'ẖ',
'ẗ',
'ẘ',
'ẙ',
'ẚ',
'ẛ',
'ẞ',
'ὐ',
'ὒ',
'ὔ',
'ὖ',
'ᾀ',
'ᾁ',
'ᾂ',
'ᾃ',
'ᾄ',
'ᾅ',
'ᾆ',
'ᾇ',
'ᾐ',
'ᾑ',
'ᾒ',
'ᾓ',
'ᾔ',
'ᾕ',
'ᾖ',
'ᾗ',
'ᾠ',
'ᾡ',
'ᾢ',
'ᾣ',
'ᾤ',
'ᾥ',
'ᾦ',
'ᾧ',
'ᾲ',
'ᾳ',
'ᾴ',
'ᾶ',
'ᾷ',
'ι',
'ῂ',
'ῃ',
'ῄ',
'ῆ',
'ῇ',
'ῒ',
'ΐ',
'ῖ',
'ῗ',
'ῢ',
'ΰ',
'ῤ',
'ῦ',
'ῧ',
'ῲ',
'ῳ',
'ῴ',
'ῶ',
'ῷ',
'Ω',
'K',
'Å',
'ff',
'fi',
'fl',
'ffi',
'ffl',
'ſt',
'st',
'ﬓ',
'ﬔ',
'ﬕ',
'ﬖ',
'ﬗ']
让我们来看看:
s1='µ'
s2=s1.swapcase().swapcase()
s1==s2
假的
s1='ß'
s2=s1.swapcase().swapcase()
s1==s2
假的
假的
你会碰巧知道为什么会这样吗?什么是小写或大写的“ß”
?我不清楚,为什么这个输出是ss?我最喜欢的一个例子,用来反驳一个人的直觉,关于case world的土耳其大写字母I是带点的,小写字母是无点的I。试试s='ıİ'
,看看会发生什么“ss”映射是由Unicode联盟定义的-请参阅。Python不是“知道”或“决定”任何事情,它是在实现标准。Python在每个版本中捆绑Unicode数据库的副本,并在该数据库中查找字符信息;Python不独立决定大小写映射等。
s1 = 'ﬗ'
s2 = s1.swapcase().swapcase()
s1 == s2