关于string:Python Char Comparisons

Python Char Comparisons

本问题已经有最佳答案,请猛点这里访问。

所以,我一直在解决一些问题,这些问题要求代码按字母顺序组织字符串,所以我的第一个想法是尝试使用char比较。如果chara

需要一个简单的解释他们是如何工作的。谢谢您!


如果charAcharB实际上是字符(即长度1字符串),则charA < charBiff ord(charA) < ord(charB)

也就是说,如果chara的unicode码位比charb的unicode码位小,它就是一个较小的字符。

注意,这意味着'Z' < 'a',因为在Unicode中,所有大写字母a-z都在小写字母a-z之前:

1
2
3
4
5
6
7
8
9
10
>>> ord('A')
65
>>> ord('Z')
90
>>> ord('a')
97
>>> 90 < 97 # of course
True
>>> 'Z' < 'a' # possibly surprising
True

如果你想要某种"友好"的比较,你必须明确要求。

通常情况下,您只需要casefold,它会积极地去除案例信息,这样,例如,AA就可以得到相同的处理:

1
2
3
4
>>> 'A'.casefold()
'a'
>>> 'Z'.casefold() < 'a'.casefold()
False

出于全面的通用性,您可能需要类似于Unicode排序规则算法的东西。但是python没有内置的,所以您需要像pyuca这样的第三方库。


比较字符时,会比较它们的顺序值

所以说'a' < 'b'就是ord('a') < ord('b')的意思。