gpt4 book ai didi

Python3.0 : tokenize & BytesIO

转载 作者:行者123 更新时间:2023-12-01 06:19:49 25 4
gpt4 key购买 nike

尝试在 python3.0 中对字符串进行标记化时,为什么在标记开始之前会出现前导 '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 标记是怎么回事?这应该发生吗?如果是这样,那么我应该总是跳过第一个标记吗?

[编辑]

我发现 token 类型 57 是 tokenize.ENCODING ,如果需要,可以轻松地从 token 流中过滤掉。

最佳答案

这是源代码的cookie。您可以明确指定一个:

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

否则 Python 会采用默认编码,即 Python 3 中的 utf-8。

关于Python3.0 : tokenize & BytesIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com