加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 处理带前导零的标记

发布时间:2020-12-20 11:25:39 所属栏目:Python 来源:网络整理
导读:为了标记输入表达式,我使用了tokenize.generate_tokens(): tokens = cStringIO.StringIO(SourceLine).readlinetokens = tokenize.generate_tokens(tokens) 现在,当SourceLine =“Y123 = 00911 98/3”时 在令牌元组中,我得到以下标记值: "Y123","=","00","9
为了标记输入表达式,我使用了tokenize.generate_tokens():

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

现在,当SourceLine =“Y123 = 00911 98/3”时
在令牌元组中,我得到以下标记值:

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

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

"Y123","00411","3"

我不明白为什么在00911的第一种情况下它生成了两个令牌00和911而不是只有一个值为00911的令牌?

解决方法

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

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

因此,似乎tokenizer将它解析为十进制文字旁边的有效八进制文字.如果你试图解析一些类似Python的语言,你可以将它重新处理成你想要的格式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读