python3.0で文字列を作成しようとすると、トークンが開始する前にtokenize
先頭を取得するのはなぜですか?'utf-8'
python3 docsから、次の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であり、必要に応じてトークンストリームから簡単に除外できることがわかりました。