python - Python 字符串比较_真正_是如何工作的?

标签 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 代码点;这将是最简单的,似乎是一个合理的默认值,但它也建议,例如,“3/4”<“⅐”<“↉”和“⓿”>“⓵”>“⒌”>“⑽” ' > '⑮',以及“A”>“C”(这是一个全角 A),这看起来有点……不符合 Python 风格,即使它是一个非常奇怪的边缘情况。

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

最佳答案

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

Strings (instances of str) compare lexicographically using the numerical Unicode code points (the result of the built-in function ord()) of their characters.

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

关于python - Python 字符串比较_真正_是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840092/

相关文章:

python - 需要 Django Rest Framework JWT 登录

asp.net - 无法将索引 35 处的字节 [FC] 从指定的代码页转换为 Unicode

android - 如何在 Android 上显示注音 (IPA) 符号

python - 检查 Pandas DataFrame 单元格是否包含特定字符串

python - Python:什么是“变量”?

python - 抓取内容中的标签必须与原始 HTML 文件中的标签顺序相同

python-3.x - 使用python脚本下载YouTube视频

php - 如何捕捉 Marz/März/März?

python - 如何(以何种形式)共享(交付)一个 Python 函数?

python - 如何在 jinja2 中打印一行字典?