安全地比较Python中的两个字符串

时间:2017-12-27 07:09:20

标签: python string python-2.7 unicode

所以我想比较两个字符串,有时候其中一个字符串类型为" unicode"有时其中一个将是#34; str"。

这就是我目前所得到的:

def poll_change(self):
    ''' Returns a tuple (has_changed, new_element_str) '''

    new_element = self.find_element()
    old_element = self.read_element_str()

    # TODO: handle compare correctly
    if type(new_element) is not type(old_element):
        changed = False
    else:
        changed = new_element != old_element

    return changed, new_element

对此最好的解决方案是什么? 现在我只是返回False如果字符串的类型不相等,但我想比较它们。

如果我将unicode与str进行比较,我会收到错误。 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/difflib.py:433: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal a[besti-1] == b[bestj-1]

我正在使用Python 2.7

1 个答案:

答案 0 :(得分:-2)

>>> u"a" == "a"
True
>>> "a" == "a"
True
>>> u"a" == u"a"
True

那么问题是什么?或者你的意思是你想要比较类型?