Python中的字符串比较
让我们看看如何在Python中比较字符串。
方法 1:使用关系运算符
关系运算符比较从第零个索引到字符串字符串的Unicode 值。然后根据使用的运算符返回一个布尔值。
例子:
“Geek” == “Geek” will return True as the Unicode of all the characters are equal
In case of “Geek” and “geek” as the unicode of G is \u0047 and of g is \u0067
“Geek” < “geek” will return True and
“Geek” > “geek” will return False
Python3
print("Geek" == "Geek")
print("Geek" < "geek")
print("Geek" > "geek")
print("Geek" != "Geek")
Python3
str1 = "Geek"
str2 = "Geek"
str3 = str1
print("ID of str1 =", hex(id(str1)))
print("ID of str2 =", hex(id(str2)))
print("ID of str3 =", hex(id(str3)))
print(str1 is str1)
print(str1 is str2)
print(str1 is str3)
str1 += "s"
str4 = "Geeks"
print("\nID of changed str1 =", hex(id(str1)))
print("ID of str4 =", hex(id(str4)))
print(str1 is str4)
Python3
# function to compare string
# based on the number of digits
def compare_strings(str1, str2):
count1 = 0
count2 = 0
for i in range(len(str1)):
if str1[i] >= "0" and str1[i] <= "9":
count1 += 1
for i in range(len(str2)):
if str2[i] >= "0" and str2[i] <= "9":
count2 += 1
return count1 == count2
print(compare_strings("123", "12345"))
print(compare_strings("12345", "geeks"))
print(compare_strings("12geeks", "geeks12"))
输出:
True
True
False
False
方法 2:使用is和is not
==运算符比较两个操作数的运算符并检查值是否相等。而is运算符检查两个操作数是否引用同一个对象。 != 的情况也是如此,而不是。
让我们通过一个例子来理解这一点:
蟒蛇3
str1 = "Geek"
str2 = "Geek"
str3 = str1
print("ID of str1 =", hex(id(str1)))
print("ID of str2 =", hex(id(str2)))
print("ID of str3 =", hex(id(str3)))
print(str1 is str1)
print(str1 is str2)
print(str1 is str3)
str1 += "s"
str4 = "Geeks"
print("\nID of changed str1 =", hex(id(str1)))
print("ID of str4 =", hex(id(str4)))
print(str1 is str4)
输出:
ID of str1 = 0x7f6037051570
ID of str2 = 0x7f6037051570
ID of str3 = 0x7f6037051570
True
True
True
ID of changed str1 = 0x7f60356137d8
ID of str4 = 0x7f60356137a0
False
字符串的对象 ID 在不同的机器上可能会有所不同。 str1、str2 和 str3 的对象 ID 相同,因此在所有情况下它们的结果都是 True。 str1 的对象id 改变后,str1 和str2 的结果将为false。即使使用与新 str1 相同的内容创建 str4 后,答案也会为 false,因为它们的对象 ID 不同。
反之亦然。
方法三:创建用户自定义函数。
通过使用关系运算符,我们只能通过它们的 unicode 来比较字符串。为了根据一些其他参数比较两个字符串,我们可以制作用户定义的函数。
在以下代码中,我们的用户定义函数将根据位数比较字符串。
蟒蛇3
# function to compare string
# based on the number of digits
def compare_strings(str1, str2):
count1 = 0
count2 = 0
for i in range(len(str1)):
if str1[i] >= "0" and str1[i] <= "9":
count1 += 1
for i in range(len(str2)):
if str2[i] >= "0" and str2[i] <= "9":
count2 += 1
return count1 == count2
print(compare_strings("123", "12345"))
print(compare_strings("12345", "geeks"))
print(compare_strings("12geeks", "geeks12"))
输出:
False
False
True