Python Char Comparisons

时间:2018-06-18 23:14:01

标签: python string char

所以,我一直在处理一些问题,要求代码按字母顺序组织一个字符串,所以我的第一个想法是尝试使用字符比较。 如果charA< charB等等,但无法实现。但我想我真的不知道字符比较的工作原理。

需要一个关于它们如何工作的简单解释。 谢谢!

2 个答案:

答案 0 :(得分:0)

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

所以'a' < 'b'只意味着ord('a') < ord('b')

答案 1 :(得分:0)

如果charAcharB实际上是字符(即长度为1的字符串),那么charA < charB iff ord(charA) < ord(charB)

也就是说,如果charA的Unicode code point的数字小于charB的Unicode代码点,则它是一个较小的字符。

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

>>> ord('A')
65
>>> ord('Z')
90
>>> ord('a')
97
>>> 90 < 97 # of course
True
>>> 'Z' < 'a' # possibly surprising
True

如果你想要某种友好的&#34;比较,你必须明确要求它。

通常,您只需要casefold,它会积极地删除案例信息,以便例如Aa可以被视为相同:

>>> 'A'.casefold()
'a'
>>> 'Z'.casefold() < 'a'.casefold()
False

为了完全普遍,您可能想要Unicode Collation Algorithm之类的东西。但Python并没有内置,所以你需要像pyuca这样的第三方库。