質問

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 、必要であれば、容易にトークン・ストリームから除外することができる。

役に立ちましたか?

解決

これは、ソースのコーディングクッキーです。あなたが明示的に指定することができます:

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

そうでない場合はPythonは、Python 3でデフォルトのエンコーディング、UTF-8を想定します。

scroll top