Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当'string.swapcase().swapcase()'不等于'string'时?_Python_Python 3.x_String_Character Encoding_Character - Fatal编程技术网

Python 当'string.swapcase().swapcase()'不等于'string'时?

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

对于str.swapcase()方法,表示:

返回将大写字符转换为小写字符的字符串副本,反之亦然请注意,s.swapcase().swapcase()==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