Python字符串比较_really_如何工作?

时间:2017-10-19 22:59:50

标签: python python-3.x unicode internationalization

因此,在Python中,字符串具有固有的顺序;

>>>'A' < 'B' < 'C'
True
>>>"angler" < "beta fish" < "coleocanth"
True

大多数消息来源说Python中的字符串是按ASCII代码排序的 - 除了这显然是无稽之谈,因为Python 3字符串是Unicode。

显然,A,B,C的定义顺序......并且可能其他语言具有相似的字母顺序。

但你如何命令,比如'♳','▧'和'ⵞ'?更重要的是,你如何订购A ,,,,,,,,,,,,,,,,, A,和?

假设它回退到比较Unicode代码点;这是最简单的,似乎是一个合理的默认值,但它也暗示,例如,`¾'&lt; '⅐'&lt; '↉'和'⓿'&gt; '⓵'&gt; '⒌'&gt; '⑽'&gt; '⑮'和“A”&gt; “C”(这是一个全宽A)看起来有点......非Pythonic,即使它是一个非常奇怪的边缘情况。

是否有更复杂的规则使用,如果有,它们在哪里记录?它是实现定义还是有标准?

1 个答案:

答案 0 :(得分:3)

来自docs(令人沮丧的是,字符串类型的文档中未提及):

  

字符串(str的实例)使用字符的数字Unicode代码点(内置函数ord()的结果)按字典顺序进行比较。

这是规范性的,并且对于实施是准确的。您可以查看字符串比较here的Python 3.6.3实现。