我正在用Python編寫一些單元測試,現在我有一個相當奇怪的錯誤。我比較兩個字符串,看起來完全相同,但我得到一個斷言錯誤。下面的代碼打印出什麼我評論的背後:這兩個Python unicode字符串爲什麼不同?
print type(a), len(a), a # <type 'unicode'> 12 € 290.000,00
print type(b), len(b), b # <type 'unicode'> 12 € 290.000,00
print a == b # False
因此,要找出其中的人物是不同的,我打印出來,並通過文字比較字符串的字符:
for enum, i in enumerate(a):
print a[enum], b[enum], a[enum] == b[enum]
這種打印出:
€ € True
False # <== THE SPACE IS NOT EQUAL?!!?
2 2 True
9 9 True
0 0 True
. . True
0 0 True
0 0 True
0 0 True
, , True
0 0 True
0 0 True
所以,令我驚訝的是,空間是使這兩個字符串不相等的字符。我真的不明白這一點。爲什麼兩個unicode字符串中的空格不同?
有人知道這裏有什麼錯嗎?歡迎所有提示!
我的精神力量告訴我其中一個空間是一個不間斷的空間('U + 00A0'),而不是一個「正常」空間('U + 0020')。 – 2015-02-10 14:29:00
查看不同字符的實際代碼。 (a):print ord(a [enum]),ord(b [enum]),a [enum] == b [enum]#枚舉中有很多字符看起來相同(如空格) – Slam 2015-02-10 14:30:21
看看代碼點是什麼 – LexyStardust 2015-02-10 14:37:09