6.1.5 字符串的比较

Java使用equals()比较两个字符串的内容,Python直接使用“==”“!=”操作符比较两个字符串的内容。如果所比较的两个变量的类型不相同,那么比较的内容也不相同。【例6-1】中的这段代码演示了Python中字符串的比较。

【例6-1.py】


01     # 字符串的比较
02     str1 = 1
03     str2 = "1"
04     if str1 == str2:
05         print ("相同")
06     else:
07         print ("不相同")
08     if str(str1) == str2:
09         print ("相同")
10     else:
11         print ("不相同")

【代码说明】

·第2行代码定义了1个数字类型的变量str1。

·第3行代码定义了1个字符串类型的变量str2。

·第4行代码比较str1和str2的值。由于str1和str2的类型不同,所以两者的内容也不相同。输出结果为“不相同”。

·第8行代码,把数字型的变量str1转换为字符串类型,数字1被转换为字符串“1”,然后再与str2进行比较。输出结果为“相同”。

如果要比较字符串中的一部分内容,可以先截取子串,再使用“==”操作符进行比较。如果要比较字符串的开头或结尾部分,更方便的方法是使用startswith()或endswith()函数。startswith()的声明如下所示。


startswith(substring, [,start [,end]])

【代码说明】

·参数substring是与源字符串开头部分比较的子串。

·参数start表示开始比较的位置。

·参数end表示比较结束的位置,即在start:end范围内搜索子串substring。

·如果字符串以substring开头,则返回True;否则,返回False。

endswith()的参数和返回值类似startswith()的参数和返回值,不同的是endswith()从源字符串的尾部开始搜索。下面这段代码演示了startswith()和endswith()的使用。


01     # 比较字符串的开始和结束处
02     word = "hello world"
03     print ("hello" == word[0:5])
04     print (word.startswith("hello"))
05     print (word.endswith("ld", 6))
06     print (word.endswith("ld", 6, 10))
07     print (word.endswith("ld", 6, len(word)))

【代码说明】

·第3行代码先获取子串[0:5],再与“hello”进行比较。输出结果为“True”。

·第4行代码调用startswith(),比较字符串变量word的开头部分“hello”。输出结果为“True”。

·第5行代码,从字符串变量word的结尾到word[6]之间搜索子串“ld”。输出结果为“True”。

·第6行代码,从“分片”word[6:10]中搜索子串“ld”。由于搜索的字符不包括位置10所在的字符,所以在word[6:10]中搜索不到子串“ld”。输出结果为“False”。

·第7行代码,从“分片”word[6:len(word)]中搜索子串“ld”,len(word)的值为11。输出结果为“True”。

注意 startswith()、endswith()相当于分片[0:n],n是源字符串中最后一个索引。startswith()、endswith()不能用于比较源字符串中任意一部分的子串。