Python 中文开发手册

tokenize (Language) - Python 中文开发手册

源代码: Lib / tokenize.py

该tokenize模块为Python源代码提供了一个词法扫描器,并以Python实现。该模块中的扫描器也将评论作为标记返回,从而使其对于实现“漂亮打印机”(包括用于屏幕显示的着色器)非常有用。

为了简化标记流处理,使用通用标记类型返回所有运算符和分隔符令牌token.OP。通过检查tokenize.generate_tokens()标识特定运算符标记的字符序列返回的元组的第二个字段(包含匹配的实际标记字符串)可以确定确切的类型。

主要入口点是一个生成器:

tokenize.generate_tokens(readline)

generate_tokens()生成器需要一个参数readline,它必须是一个可调用的对象,它提供与内置文件对象的readline()方法相同的接口(请参阅文件对象部分)。 对函数的每次调用都应以字符串的形式返回一行输入。 另外,readline可能是一个可调用的对象,通过提高StopIteration来表示完成。

生成器生成这些成员的5元组:令牌类型; 令牌字符串; 一个2元组(srow, scol)ints,用于指定源中源标记开始的行和列; 一个2元组(erow, ecol)inint,用于指定令牌在源中结束的行和列; 和找到令牌的行。传递的行(最后一个元组项)是逻辑行; 包括延续线。

2.2版本中的新功能。

为保持向后兼容性而保留较旧的入口点:

tokenize.tokenize(readline[, tokeneater])

该tokenize()函数接受两个参数:一个表示输入流,一个提供输出机制tokenize()。

第一个参数readline必须是一个可调用对象,它提供与readline()内置文件对象方法相同的接口(请参见文件对象部分)。对函数的每次调用都应以字符串的形式返回一行输入。或者,readline可能是一个可调用的对象,通过提升表示完成StopIteration。

在版本2.5中进行了更改:添加了StopIteration支持。

第二个参数tokeneater也必须是可调用的对象。它为每个标记调用一次,有五个参数,对应于生成的元组generate_tokens()。

token模块中的所有常量也会从中导出tokenize,以及可能通过以下方式传递给tokeneater函数的两个附加标记类型值tokenize():

tokenize.COMMENT

令牌值用于表示注释。

tokenize.NL

令牌值用于指示非终止换行符。NEWLINE标记表示Python代码的逻辑行结束; 当一条逻辑代码行在多条物理线路上继续时,会生成NL令牌。

提供另一个功能来反转标记化过程。这对于创建令牌化脚本,修改令牌流和回写修改的脚本的工具很有用。

tokenize.untokenize(iterable)

将令牌转换回Python源代码。该迭代必须具有至少两个元件,所述令牌类型和令牌字符串返回序列。任何其他序列元素都将被忽略。

重建的脚本作为单个字符串返回。结果保证将标记返回以匹配输入,以便转换无损并确保往返。保证仅适用于令牌类型和令牌字符串,因为令牌之间的间距(列位置)可能会发生变化。

2.5版本中的新功能。

exception tokenize.TokenError

当可能分成多行的文档字符串或表达式未在文件中的任何位置完成时引发,例如:

"""Beginning of

docstring

或者:

[1,

2,

3

请注意,未封闭的单引号字符串不会导致引发错误。它们被标记为ERRORTOKEN,然后标记它们的内容。

将浮点文字转换为Decimal对象的脚本重写器示例:

def decistmt(s):

"""Substitute Decimals for floats in a string of statements.

>>> from decimal import Decimal

>>> s = 'print +21.3e-5*-.1234/81.7'

>>> decistmt(s)

"print +Decimal ('21.3e-5')*-Decimal ('.1234')/Decimal ('81.7')"

>>> exec(s)

-3.21716034272e-007

>>> exec(decistmt(s))

-3.217160342717258261933904529E-7

"""

result = []

g = generate_tokens(StringIO(s).readline) # tokenize the string

for toknum, tokval, _, _, _ in g:

if toknum == NUMBER and '.' in tokval: # replace NUMBER tokens

result.extend([

(NAME, 'Decimal'),

(OP, '('),

(STRING, repr(tokval)),

(OP, ')')

])

else:

result.append((toknum, tokval))

return untokenize(result)

python tokenize()_tokenize (Language) – Python 中文开发手册 - Break易站相关推荐

  1. SimpleXMLRPC_SimpleXMLRPCServer (Internet) – Python 中文开发手册 - Break易站

    Python 中文开发手册 SimpleXMLRPCServer (Internet) - Python 中文开发手册 注意 该SimpleXMLRPCServer模块已被合并到Python 3中.当 ...

  2. pprint python_pprint (Data Types) – Python 中文开发手册 - Break易站

    Python 中文开发手册 pprint (Data Types) - Python 中文开发手册 源代码: Lib / pprint.py 该pprint模块提供了以可以用作解释器输入的形式&quo ...

  3. python stringio_StringIO (String) – Python 中文开发手册 - Break易站

    Python 中文开发手册 StringIO (String) - Python 中文开发手册 这个模块实现了一个文件类,StringIO它读取和写入字符串缓冲区(也称为内存文件).请参阅文件对象的操 ...

  4. golang日志服务器_日志系统 | log/syslog (log) – Go 中文开发手册 - Break易站

    Go 中文开发手册 日志系统 | log/syslog (log) - Go 中文开发手册 import "log/syslog"概述索引示例 概述 软件包系统日志为系统日志服务提 ...

  5. cbrt c语音_cbrt (Numerics) – C 中文开发手册 - Break易站

    C 语言中文开发手册 cbrt (Numerics) - C 中文开发手册 在头文件中定义 ​ ​ float cbrtf( float arg ); (1) (since C99) double c ...

  6. linebreak_operator-linebreak (Rules) – Eslint 中文开发手册 - Break易站

    Eslint 中文开发手册 operator-linebreak (Rules) - Eslint 中文开发手册 在命令行上的--fix选项可以自动修复一些被这条规则反映的问题. 当一条语句太长而不适 ...

  7. python struct pack string_struct (String) – Python 中文开发手册

    Python 中文开发手册 struct (String) - Python 中文开发手册 该模块执行Python值与C结构之间的转换,表示为Python字符串.这可用于处理存储在文件或网络连接中的二 ...

  8. python中文开发文档_pydoc (Development Tools) – Python 中文开发手册

    Python 中文开发手册 pydoc (Development Tools) - Python 中文开发手册 2.1版本中的新功能. 源代码: Lib / pydoc.py pydoc模块自动从Py ...

  9. input type=text 无法使用.html(),input type=”text” (Elements) – HTML 中文开发手册

    HTML 中文开发手册 input type="text" (Elements) - HTML 中文开发手册 "text"类型的元素 创建通用的单行文本字段. ...

  10. electron 屏幕标注_屏幕 | screen (screen) – Electron 中文开发手册

    屏幕 | screen (screen) - Electron 中文开发手册 检索有关屏幕尺寸,显示,光标位置等的信息 过程:Main, Rendererready在app发射模块事件之前,您不能要求 ...

最新文章

  1. vue 怎么全局到入常量_vue定义全局变量和全局方法的方法示例
  2. 重磅直播|结构光方法新应用
  3. 试玩 go-socks5
  4. 与老大的交谈——估算项目时间
  5. java Hashtable的遍历方法
  6. 番茄钟怎么调_不一样的番茄计时 APP,让番茄钟回归效率的本质
  7. Linux 信号详解五(信号阻塞,信号未决)
  8. phpstorm取消自动保存,修改未保存的文件显示*星号
  9. 塞班S60v3版平台手机证书权限内容大解析
  10. HTML网页实训的目的,web前端设计与开发-实验目的及要求 (2)
  11. toastr 自定义提示
  12. postman常用断言
  13. 如何下载ScienceDirect(Elsevier)文献的补充材料
  14. LUEVELSMEYER的PE文件格式
  15. excel调用python编程-超简单:用Python让Excel飞起
  16. 【python】Flask之session使用
  17. PB中调用OLE打开word文档
  18. 微信公众号订阅号留言点赞采集抓取爬虫
  19. 【LC刷题笔记】第四天:23+26+33(1-16)
  20. 【TEST】NOI-Linux可用 gedit c++精简配置 附Emacs日常配置

热门文章

  1. swift 函数类型+高阶函数
  2. C语言中格式输出二进制的两种方法
  3. RTL8367学习笔记1——基础知识
  4. 如何通过编程打开一个网页
  5. Rstudio图片保存方式
  6. Google Chrome企业咨询服务市场调研报告- 行业发展机遇、市场定位及主要驱动因素
  7. HSSF、XSSF、SXSSF、对Excel的区别,以及对应不同后缀名Excel(xls,xlsx)的使用
  8. 2010年最怪异的25个面试问题,你能回答吗?
  9. java excel 数组公式_在Apache poi中的数组公式
  10. postgresql division by zero