Frage

Beim Versuch, eine Zeichenfolge in python3.0 tokenize, warum werde ich ein führender 'utf-8' vor den Token starten?

Von der python3 docs , tokenize jetzt verwendet werden soll, wie folgt:

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

Wenn dies jedoch am Terminal versucht, geschieht Folgendes:

>>> 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)

Was ist mit dem utf-8 Token, das den anderen vorangeht? Ist das geschehen soll? Wenn ja, dann sollte ich einfach immer überspringen das erste Token?

[Bearbeiten]

Ich habe festgestellt, dass Token-Typ 57 ist tokenize.ENCODING , die sich leicht aus dem Tokenstrom herausgefiltert werden können, wenn nötig.

War es hilfreich?

Lösung

Das ist die Codierung Cookie der Quelle. Sie können eine explizit angeben:

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

Ansonsten Python nimmt die Standardcodierung, UTF-8 in Python 3.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top