📜  Python中的字符串比较

📅  最后修改于: 2022-05-13 01:54:48.838000             🧑  作者: Mango

Python中的字符串比较

让我们看看如何在Python中比较字符串。

方法 1:使用关系运算符

关系运算符比较从第零个索引到字符串字符串的Unicode 值。然后根据使用的运算符返回一个布尔值。

例子:

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:使用isis 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