Pregunta

Cuando se trata de una cadena en tokenize python3.0, ¿Por qué aparece un 'utf-8' líder antes de las fichas de comienzo?

Desde el python3 docs , tokenize ahora se debe utilizar de la siguiente manera:

g = tokenize(BytesIO(s.encode('utf-8')).readline)

Sin embargo, cuando se trata de esta en el terminal, ocurre lo siguiente:

>>> from tokenize import tokenize
>>> from io import BytesIO
>>> g = tokenize(BytesIO('foo'.encode()).readline)
>>> next(g)
(57, 'utf-8', (0, 0), (0, 0), '')
>>> next(g)
(1, 'foo', (1, 0), (1, 3), 'foo')
>>> next(g)
(0, '', (2, 0), (2, 0), '')
>>> next(g)

¿Qué pasa con el token utf-8 que precede a los demás? Se supone que pase esto? Si es así, entonces debería simplemente siempre salte el primer token?

[editar]

he encontrado que token de tipo 57 es tokenize.ENCODING , que fácilmente se pueden filtrar fuera de la corriente de contadores si es necesario.

¿Fue útil?

Solución

Esa es la cookie de codificación de la fuente. Puede especificar uno explícitamente:

# -*- coding: utf-8 -*-
do_it()

De lo contrario Python asume el valor predeterminado de codificación, UTF-8 en Python 3.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top