Python3.0:标记化&;拜特西奥
在python3.0中尝试Python3.0:标记化&;拜特西奥,python,io,tokenize,bytesio,Python,Io,Tokenize,Bytesio,在python3.0中尝试tokenize字符串时,为什么要在标记开始之前获得一个前导的'utf-8' 从中,tokenize现在应按如下方式使用: g = tokenize(BytesIO(s.encode('utf-8')).readline) 但是,在终端尝试此操作时,会发生以下情况: >>> from tokenize import tokenize >>> from io import BytesIO >>> g = tokeni
tokenize
字符串时,为什么要在标记开始之前获得一个前导的'utf-8'
从中,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是,如果需要,可以很容易地从令牌流中筛选出来。这是源代码的编码cookie。您可以显式指定一个:
# -*- coding: utf-8 -*-
do_it()
否则Python将采用默认编码,即Python 3中的utf-8