Python3.0: tokenize & BytesIO
Domanda
Quando si tenta di tokenize
una stringa in python3.0, perché ottengo un 'utf-8'
leader prima che i gettoni di iniziare?
python3 docs , tokenize
dovrebbe ora essere utilizzato come segue:
g = tokenize(BytesIO(s.encode('utf-8')).readline)
Tuttavia, quando si tenta questo al terminale, si verifica quanto segue:
>>> 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)
Che cosa è con il token utf-8
che precede gli altri? E 'questo dovrebbe succedere? Se è così, devo solo sempre saltare il primo token?
[modifica]
Ho trovato che pedina il tipo 57 è tokenize.ENCODING , che può facilmente essere filtrato dal flusso di token, se necessario.
Soluzione
Questo è il cookie di codifica della fonte. È possibile specificare uno esplicitamente:
# -*- coding: utf-8 -*-
do_it()
Altrimenti Python assume la codifica predefinita, utf-8 in Python 3.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow