При попытке tokenize
строки в python3.0, почему я получаю ведущий 'utf-8'
до запуска токенов?
Из документов python3 , tokenize
теперь следует использовать следующим образом:
g = tokenize(BytesIO(s.encode('utf-8')).readline)
Однако при попытке сделать это в терминале происходит следующее:
>>> 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)
Что с токеном utf-8
, который предшествует остальным? Это должно случиться? Если так, то я должен просто пропустить первый токен?
[править]
Я обнаружил, что токеном типа 57 является tokenize.ENCODING , который при необходимости может быть легко отфильтрован из потока токенов.