gpt4 book ai didi

python - 处理带有前导零的标记

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:43 25 4
gpt4 key购买 nike

为了标记化输入表达式,我使用了 tokenize.generate_tokens():

tokens = cStringIO.StringIO(SourceLine).readline
tokens = tokenize.generate_tokens(tokens)

现在,当 SourceLine = "Y123 = 00911 + 98/3"tokens 元组中,我得到以下标记值:

"Y123", "=" , "00", "911","+", "98" , "/" , "3"

但是,当我通过 SourceLine = "Y123 = 00411 + 98/3" 时,我得到:

"Y123", "=" , "00411", "+" ,"98","/","3"

我不明白为什么在第一种情况下 00911 它生成了两个 token 00911 而不是只有一个值为 00911?

最佳答案

在 Python 2 中,以 0 开头的整数文字被解释为八进制数(基数为 8)。因此,您的第一个 SourceLine 实际上在语法上是无效的,因为 9 不是八进制的有效数字:

>>> Y123 = 00911 + 98 / 3
File "<stdin>", line 1
Y123 = 00911 + 98 / 3
^
SyntaxError: invalid token

因此,分词器似乎将其解析为十进制文字旁边的有效八进制文字。如果您尝试解析一些类似 Python 的语言,您可以将其后处理回您想要的格式。

关于python - 处理带有前导零的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942615/

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