Python3.0:トークン化&BytesIO
質問
python3.0内の文字列を
tokenize
しようとすると、トークンが開始する前に、、なぜ私は大手'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 であることを見出しましたA>、必要であれば、容易にトークン・ストリームから除外することができる。
解決
これは、ソースのコーディングクッキーです。あなたが明示的に指定することができます:
# -*- coding: utf-8 -*-
do_it()
そうでない場合はPythonは、Python 3でデフォルトのエンコーディング、UTF-8を想定します。
所属していません StackOverflow