open - La comparación igual de Python Unicode falló
python unicode to utf8 (1)
Esta pregunta está relacionada con la búsqueda de caracteres Unicode en Python
Leo el archivo de texto Unicode usando códecs Python
codecs.open(''story.txt'', ''rb'', ''utf-8-sig'')
Y estaba tratando de buscar cadenas en él. Pero recibo la siguiente advertencia.
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
¿Hay alguna forma especial de comparación de cadenas unicode?
Puede usar el operador ==
para comparar objetos unicode por igualdad.
>>> s1 = u''Hello''
>>> s2 = unicode("Hello")
>>> type(s1), type(s2)
(<type ''unicode''>, <type ''unicode''>)
>>> s1==s2
True
>>>
>>> s3=''Hello''.decode(''utf-8'')
>>> type(s3)
<type ''unicode''>
>>> s1==s3
True
>>>
Pero su mensaje de error indica que no está comparando objetos Unicode. Probablemente esté comparando un objeto unicode
con un objeto str
, así:
>>> u''Hello'' == ''Hello''
True
>>> u''Hello'' == ''/x81/x01''
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False
Vea cómo he intentado comparar un objeto Unicode con una cadena que no representa una codificación UTF8 válida.
Su programa, supongo, es la comparación de objetos Unicode con objetos str, y el contenido de un objeto str no es una codificación UTF8 válida. Esto parece ser el resultado de que usted (el programador) no sepa qué variable contiene unicide, qué variable contiene UTF8 y qué variable contiene los bytes leídos desde un archivo.
Recomiendo nedbatchelder.com/text/unipain.html , especialmente los consejos para crear un "Unicode Sandwich".