所以,我一直在处理一些问题,要求代码按字母顺序组织一个字符串,所以我的第一个想法是尝试使用字符比较。 如果charA< charB等等,但无法实现。但我想我真的不知道字符比较的工作原理。
需要一个关于它们如何工作的简单解释。 谢谢!
答案 0 :(得分:0)
比较字符时,会比较它们的序数值
所以'a' < 'b'
只意味着ord('a') < ord('b')
答案 1 :(得分:0)
如果charA
和charB
实际上是字符(即长度为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
,它会积极地删除案例信息,以便例如A
和a
可以被视为相同:
>>> 'A'.casefold()
'a'
>>> 'Z'.casefold() < 'a'.casefold()
False
为了完全普遍,您可能想要Unicode Collation Algorithm之类的东西。但Python并没有内置,所以你需要像pyuca
这样的第三方库。