字符串比较如何在python上运行?

时间:2012-11-15 14:57:49

标签: python string

  

可能重复:
  String Comparison Technique Used by Python

>>> "spam" < "bacon"
False
>>> "spam" < "SPAM"
False
>>> "spam" < "spamalot"
True
>>> "Spam" < "eggs"
True

qeustion:比较等长字符串的方式。如果字符串长度不一样,为什么“垃圾邮件”比“鸡蛋”少呢?

4 个答案:

答案 0 :(得分:3)

Lexigraphically。

比较第一个字节,如果第一个字节的序数值小于第二个字节,那么它就会更小。如果它更多,那就更好了。如果它们相同,则尝试下一个字节。如果它是全部关系而一个更长,则较短的一个是较小的。

>>> "a" < "zzz"
True
>>> "aaa" < "z"
True
>>> "b" < "a"
False
>>> "abc" < "abcd"
True
>>> "abcd" < "abce"
True
>>> "A" < "a"
True
>>> ord("A")
65
>>> ord("a")
97

答案 1 :(得分:2)

由于A位于ASCII表格中的a之前,因此S中的Spam被视为小于e中的eggs

>>> "A" < "a"
True
>>> "S" < "e"
True
>>> "S" < "eggs"
True

注意,字符串长度在比较中未考虑。从第一个字节开始比较每个字节的序数值,正如@MikeGraham在下面的评论中正确指出的那样。 一旦找到不匹配,比较就会停止,并返回比较值,如上例所示。

来自docs - Comparing Sequences and Other Types: -

  

比较使用词典排序:首先是前两个   比较项目,如果它们不同,则决定了结果   比较;如果它们相等,则比较接下来的两个项目,   等等,直到两个序列都用完为止。

同一段中还有: -

  

字符串的字典排序使用ASCII排序   个人角色

答案 2 :(得分:2)

Python中的字符串是lexicographically ordered,因此可以对它们进行逻辑排序:

>>> print sorted(['spam','bacon','SPAM','spamalot','Spam','eggs'])
['SPAM', 'Spam', 'bacon', 'eggs', 'spam', 'spamalot']

这有妥协,主要是使用unicode。字母é将在字母z for example之后排序:

>>> 'e' < 'z'
True
>>> 'é' < 'z'
False

幸运的是,您可以使用排序函数,使用locale或字符串的子类,无论如何都要对字符串进行排序。

答案 3 :(得分:1)

这是一种词典比较。