Saltar al contenido

¿Cómo verifico si un string es unicode o ascii?

Contamos con la mejor información que descubrimos online. Queremos que te resulte de utilidad y si quieres aportar algo que nos pueda ayudar a perfeccionar nuestra información hazlo con libertad.

Solución:

En Python 3, todas las cadenas son secuencias de caracteres Unicode. Hay un bytes tipo que contiene bytes sin formato.

En Python 2, un string puede ser de tipo str o de tipo unicode. Puedes saber qué usando un código como este:

def whatisthis(s):
    if isinstance(s, str):
        print "ordinary string"
    elif isinstance(s, unicode):
        print "unicode string"
    else:
        print "not a string"

Esto no distingue “Unicode o ASCII”; solo distingue los tipos de Python. un Unicode string puede consistir únicamente en caracteres en el rango ASCII, y una cadena de bytes puede contener ASCII, Unicode codificado o incluso datos no textuales.

Cómo saber si un objeto es un Unicode string o un byte string

Puedes usar type o isinstance.

En Python 2:

>>> type(u'abc')  # Python 2 unicode string literal

>>> type('abc')   # Python 2 byte string literal

En Python 2, str es solo una secuencia de bytes. Python no sabe cuál es su codificación. los unicode type es la forma más segura de almacenar texto. Si quiere entender esto más, le recomiendo http://farmdev.com/talks/unicode/.

En Python 3:

>>> type('abc')   # Python 3 unicode string literal

>>> type(b'abc')  # Python 3 byte string literal

En Python 3, str es como Python 2 unicode, y se utiliza para almacenar texto. como se llamaba str en Python 2 se llama bytes en Phyton 3.


Cómo saber si un byte string es valido utf-8 o ascii

Puedes llamar decode. Si genera una excepción UnicodeDecodeError, no era válida.

>>> u_umlaut = b'xc3x9c'   # UTF-8 representation of the letter 'Ü'
>>> u_umlaut.decode('utf-8')
u'xdc'
>>> u_umlaut.decode('ascii')
Traceback (most recent call last):
  File "", line 1, in 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

En python 3.x, todas las cadenas son secuencias de caracteres Unicode. y haciendo la verificación isinstance para str (lo que significa unicode string por defecto) debería ser suficiente.

isinstance(x, str)

Con respecto a python 2.x, la mayoría de las personas parecen estar usando una declaración if que tiene dos comprobaciones. uno para str y otro para unicode.

Si quieres comprobar si tienes un ‘string-like ‘objeto todo con una declaración sin embargo, puede hacer lo siguiente:

isinstance(x, basestring)

Nos puedes estimular nuestra investigación dejando un comentario o dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *