python说苹果不等于苹果

python说苹果不等于苹果,python,django,python-3.x,Python,Django,Python 3.x,我在django代码中遇到了一个奇怪的情况,python拒绝接受两个字符串相等: def depticon(depta): print(f'depta is {depta}') print(f'Testing |{depta}| against |Ear, Nose, Throat|') if depta=="Ear, Nose, Throat": icon = "ear.png" print("Matched ENT")

我在django代码中遇到了一个奇怪的情况,python拒绝接受两个字符串相等:

def depticon(depta):
    print(f'depta is {depta}')
    print(f'Testing |{depta}| against |Ear, Nose, Throat|')
    if depta=="Ear, Nose, Throat":        
        icon = "ear.png"
        print("Matched ENT")
    else:
        print("No match")
        icon = "health-sign.png"
    print(f'Icon is {icon}')
    return icon
这就是它的名字。这里,诊所是一个查询集:

specialties = []
specialtytext = []
specialtyicon = []
for clinic in clinics:
    if clinic.doctorid.dept not in specialties:
        dept = clinic.doctorid.department
        specialties.append(dept)
        specialtytext.append(depttext(dept))
        specialtyicon.append(depticon(dept))
请参见输出:

depta is Ear, Nose, Throat
Testing |Ear, Nose, Throat| against |Ear, Nose, Throat|
No match
Icon is health-sign.png

我将
|
字符放在字符串周围,以检查字符串中是否有任何特殊字符。

我怀疑
depta
参数的类型不是
str
,这就是为什么它与
str
值“Ear,Nose,though”不匹配的原因。在进一步使用之前,请尝试将
部门
值传递给
str()


有趣的事实:
print()。在进一步使用之前,请尝试将
部门
值传递给
str()


有趣的事实:
print()
函数使用
str()
自动转换参数。

可能字符串的类型不同。请通过
print(type(depta))
Oops打印depta的类型。我没有想到自动铸造。这不是你的问题,但为什么在一个地方使用
clinic.doctorid.depart
,在另一个地方使用
clinic.doctorid.depart
?“部门”和“部门”的区别是什么?@JimDeLaHunt我才明白你的意思。那是个错误。我应该在这两个地方都使用clinic.doctorid.dept。你应该展示你的模型。除了您看到的问题之外,当然还有一种更有效的方法可以做到这一点。可能字符串的类型不同。请通过
print(type(depta))
Oops打印depta的类型。我没有想到自动铸造。这不是你的问题,但为什么在一个地方使用
clinic.doctorid.depart
,在另一个地方使用
clinic.doctorid.depart
?“部门”和“部门”的区别是什么?@JimDeLaHunt我才明白你的意思。那是个错误。我应该在这两个地方都使用clinic.doctorid.dept。你应该展示你的模型。除了你看到的问题之外,当然还有一种更有效的方法。