【问题标题】:Python Char Comparisons [duplicate]Python Char比较[重复]
【发布时间】:2018-06-18 23:14:00
【问题描述】:

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

需要简单说明它们的工作原理。 谢谢!

【问题讨论】:

  • 试试ord()chr()
  • 如果charAcharB 实际上是字符(即长度为1 的字符串),那么charA < charB iff ord(charA) < ord(charB)。也就是说,如果 charA 的 Unicode 码位比 charB 的 Unicode 码位小,则为小字符。
  • 简而言之:每个字符都有一个 ASCII 值。比较字符的 ASCII 值。

标签: python string char


【解决方案1】:

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

所以'a' < 'b' 仅表示ord('a') < ord('b')

【讨论】:

    【解决方案2】:

    如果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
    

    如果您想要某种“友好”的比较,您必须明确提出要求。

    通常,您只需要 casefold,它会积极地删除案例信息,因此,例如,Aa 可以被同等对待:

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

    为了全面概括,您可能想要Unicode Collation Algorithm 之类的东西。但是 Python 没有内置,所以你需要一个像 pyuca 这样的第三方库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-08
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2021-11-18
      • 2014-07-23
      相关资源
      最近更新 更多