在python中使用==运算符比较字符串是否相等

时间:2016-12-15 05:31:35

标签: python string-comparison

所以我试图将两个字符串变量与==进行比较,但由于某种原因它不起作用。例如这段代码

print(dictionary[0])
print("A")
print(dictionary[0] == "A")

打印出来

A    
A
False

我不明白为什么当它们明显相等时会返回False

4 个答案:

答案 0 :(得分:1)

它适用于我

dictionary = {0:"A"}
print(dictionary[0])
print("A")
print(dictionary[0] == "A")


result: 
A
A
True

可能的原因是长度,也许它包含空间 尝试使用strip()删除空格或检查字符串len(dictionary[0])

的长度
print(dictionary[0].strip() == "A")
print len( dictionary[0] )

答案 1 :(得分:0)

尝试用光标选择输出 - 您将看到第一行包含一些空格。基本上,你的最后一行相当于:

public function saveToDisk(){
    $managerObject = app()->make('path\to\class\PagesManagerInterface');
    $managerObject->writeToFile();
}

要删除这些空格,请使用str.strip方法:

print("A    " == "A")

还有lstrip()rstrip()方法,只删除字符串左侧或右侧的空格。

答案 2 :(得分:0)

您可能处于这种情况

class Alike(object):

    def __eq__(self, obj):
        """called on =="""
        return False

    def  __repr__(self):
        """called on print"""
        return "A"

a_obj = Alike()
print(a_obj, a_obj == "A")

确保准确知道词典中存储的内容。这不是因为两个对象的打印方式与它们相同。

你可以尝试让它更多地了解它:

print type(dictionary[0]), len(dictionary[0])

答案 3 :(得分:0)

您的列表包含一个末尾有空格的字符串,或者项目编号0不是字符串,而是一个对象,打印为" A"。

class hex_number:
    def __init__(self,number):
        self.number = number

    def __repr__(self):
        return '%X' % self.number


d = {0:'A  ', 1:hex_number(10)}
for i in range(2):
    print '{}: <{}>; <{}> == <{}>? => {}'.format(i,d[i],d[i],"A",d[i]=="A")