我使用python 2.7 例如:如何比較unicode類型與中文python中的str類型?
a = u'你好'
b = '你好'
我嘗試下面的代碼,但未能
print a.encode('UTF-8') == b #return False
如何對它們進行比較平等?
我使用python 2.7 例如:如何比較unicode類型與中文python中的str類型?
a = u'你好'
b = '你好'
我嘗試下面的代碼,但未能
print a.encode('UTF-8') == b #return False
如何對它們進行比較平等?
我希望您使用的是python3
,這兩個變量都是string
,您不需要更改它們中的任何一個。簡單地比較兩者。
>>> a = u'你好'
>>> b = '你好'
>>> type(a)
<class 'str'>
>>> type(b)
<class 'str'>
>>> a == b
True
如果您使用python2
您的嘗試將工作。
很可能您的Python源文件不以UTF-8編碼。變量b
將包含這些引號之間的任何字節。這些字節將取決於編碼。例如
# coding: utf-8
print repr("你好")
打印:'\xe4\xbd\xa0\xe5\xa5\xbd'
現在,如果我們保存源文件爲GB2312和更新聲明:
# coding: GB2312
print repr("你好")
打印:'\xc4\xe3\xba\xc3'
在任何情況下,如果有一個帶有文本的字節數組,你也需要知道這些字節的編碼,否則你不能可靠地解釋它們。
如果你需要UTF-8字節而不管源文件的編碼如何,你可以寫u'你好'.encode('utf-8')
將永遠返回'\xe4\xbd\xa0\xe5\xa5\xbd'
。
我得到了'真',你是怎麼得到'假'的?只需反過來'b.decode('UTF-8')== a' –
在python3中,我用''=='來比較''False',但是'True'。在python2中,您的確切示例輸出「True」。 –
倪好。當在IDLE中與此交互時,如果我嘗試'a == b',我會得到一個'UnicodeWarning:Unicode等於比較無法將這兩個參數轉換爲Unicode - 將它們解釋爲不等'消息。 – jockster