compile_compiler - CSDN
精华内容
参与话题
  • 正则表达式re.compile()的使用

    万次阅读 2019-03-14 09:41:47
    compile 函数 match 函数 search 函数 findall 函数 finditer 函数 split 函数 sub 函数 subn 函数 re 模块的一般使用步骤如下: 使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象 通过 ...

    re 模块提供了不少有用的函数,用以匹配字符串,比如:

    • compile 函数
    • match 函数
    • search 函数
    • findall 函数
    • finditer 函数
    • split 函数
    • sub 函数
    • subn 函数

    re 模块的一般使用步骤如下:

    • 使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象
    • 通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个 Match 对象)
    • 最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作

    compile 函数

    compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下:

    re.compile(pattern[, flag])
    

    其中,pattern 是一个字符串形式的正则表达式,flag 是一个可选参数,表示匹配模式,比如忽略大小写,多行模式等。

    下面,让我们看看例子。

    
    import re
    # 将正则表达式编译成 Pattern 对象 
    pattern = re.compile(r'\d+')

    在上面,我们已将一个正则表达式编译成 Pattern 对象,接下来,我们就可以利用 pattern 的一系列方法对文本进行匹配查找了。Pattern 对象的一些常用方法主要有:

    • match 方法
    • search 方法
    • findall 方法
    • finditer 方法
    • split 方法
    • sub 方法
    • subn 方法

     

    正则表达式re.compile()
    compile()的定义:

    compile(pattern, flags=0) 
    Compile a regular expression pattern, returning a pattern object.



    从compile()函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。 
    compile()与findall()一起使用,返回一个列表。

    import re
    
    
    def main():
        content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
        regex = re.compile('\w*o\w*')
        x = regex.findall(content)
        print(x)
    
    
    if __name__ == '__main__':
        main()
    # ['Hello', 'from', 'Chongqing', 'montain', 'to', 'you']


    compile()与match()一起使用,可返回一个class、str、tuple。但是一定需要注意match(),从位置0开始匹配,匹配不到会返回None,返回None的时候就没有span/group属性了,并且与group使用,返回一个单词‘Hello’后匹配就会结束。

    import re
    
    
    def main():
        content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
        regex = re.compile('\w*o\w*')
        y = regex.match(content)
        print(y)
        print(type(y))
        print(y.group())
        print(y.span())
    
    
    if __name__ == '__main__':
        main()
    # <_sre.SRE_Match object; span=(0, 5), match='Hello'>
    # <class '_sre.SRE_Match'>
    # Hello
    # (0, 5)


    compile()与search()搭配使用, 返回的类型与match()差不多, 但是不同的是search(), 可以不从位置0开始匹配。但是匹配一个单词之后,匹配和match()一样,匹配就会结束。

    import re
    
    
    def main():
        content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
        regex = re.compile('\w*o\w*')
        z = regex.search(content)
        print(z)
        print(type(z))
        print(z.group())
        print(z.span())
    
    
    if __name__ == '__main__':
        main()
    # <_sre.SRE_Match object; span=(0, 5), match='Hello'>
    # <class '_sre.SRE_Match'>
    # Hello
    # (0, 5)

     

    展开全文
  • 每日 python 学习之——compile()函数

    千次阅读 2018-09-28 21:48:39
    compile(source, filename, mode[, flags[, dont_inherit]]) 说明:将 source 编译为代码或 ATS 对象。代码对象能够通过 exec 语句来执行或者 eval() 进行求值。 参数: source:字符串或者 ATS 对象。 filename...

    compile(source, filename, mode[, flags[, dont_inherit]])

    说明:将 source 编译为代码或 ATS 对象。代码对象能够通过 exec 语句来执行或者 eval() 进行求值。

    参数:

    • source:字符串或者 ATS 对象。
    • filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
    • mode:指定编译代码的种类。可以指定为 'exec', 'eval', 'single'。
    • flag 和 dont_inherit:可选参数

    版本:在 python2.3、2.6、2.7、3.2 中均有不同,使用时要引起注意,兼容 python3


    1. ATS 对象:Abstract Syntax Tree,抽象语法树,是源代码语法结构的一种抽象表示。https://zhuanlan.zhihu.com/p/26988179
    2. exec 语句:exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement)。
    3. eval() 函数:eval() 函数用来执行一个字符串表达式,并返回表达式的值。

    在 python2.7 中的试用:

    >>> code = 'for i in range(5): print i'
    >>> exec code
    0
    1
    2
    3
    4
    >>> eval(code)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<string>", line 1
        for i in range(10): print i
          ^
    SyntaxError: invalid syntax
    >>> cmpcode = compile(code, '', 'exec')
    >>> exec cmpcode
    0
    1
    2
    3
    4
    >>> eval(cmpcode)
    0
    1
    2
    3
    4
    >>> cmpcode
    <code object <module> at 0x107843930, file "", line 1>
    >>> str = '3 * 4 + 5'
    >>> cmpstr = compile(str, '', 'eval')
    >>> eval(cmpstr)
    17
    >>> exec cmpstr
    

     没太明白这个函数的使用场景,有什么好处,回头知道了再来更新,也欢迎知道的同学评论~

    展开全文
  • compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) Compile the source into a code or AST object. Code objects can be executed by exec() or eval(). source can either...

    英文文档:

    compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

    Compile the source into a code or AST object. Code objects can be executed by exec() or eval(). source can either be a normal string, a byte string, or an AST object. Refer to the ast module documentation for information on how to work with AST objects.
    The filename argument should give the file from which the code was read; pass some recognizable value if it wasn’t read from a file ('<string>' is commonly used).
    The mode argument specifies what kind of code must be compiled; it can be 'exec' if source consists of a sequence of statements, 'eval' if it consists of a single expression, or 'single' if it consists of a single interactive statement (in the latter case, expression statements that evaluate to something other than None will be printed).
    The optional arguments flags and dont_inherit control which future statements (see PEP 236) affect the compilation of source. If neither is present (or both are zero) the code is compiled with those future statements that are in effect in the code that is calling compile(). If the flags argument is given and dont_inherit is not (or is zero) then the future statements specified by the flags argument are used in addition to those that would be used anyway. If dont_inherit is a non-zero integer then the flags argument is it – the future statements in effect around the call to compile are ignored.
    Future statements are specified by bits which can be bitwise ORed together to specify multiple statements. The bitfield required to specify a given feature can be found as the compiler_flag attribute on the _Feature instance in the __future__ module.
    The argument optimize specifies the optimization level of the compiler; the default value of -1 selects the optimization level of the interpreter as given by -O options. Explicit levels are 0 (no optimization; __debug__ is true), 1 (asserts are removed, __debug__ is false) or 2 (docstrings are removed too).
    This function raises SyntaxError if the compiled source is invalid, and ValueError if the source contains null bytes.
    If you want to parse Python code into its AST representation, see ast.parse().
    Note: When compiling a string with multi-line code in 'single' or 'eval' mode, input must be terminated by at least one newline character. This is to facilitate detection of incomplete and complete statements in the code module.
    Changed in version 3.2: Allowed use of Windows and Mac newlines. Also input in 'exec' mode does not have to end in a newline anymore. Added the optimize parameter.
    Changed in version 3.5: Previously, TypeError was raised when null bytes were encountered in source.
    说明:
      1. 将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。
      2. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。
      3. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。
      4. 参数mode:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,mode应指定为‘exec’;当source中只包含一个简单的求值表达式,mode应指定为‘eval’;当source中包含了交互式命令语句,mode应指定为'single'。
    >>> #流程语句使用exec
    >>> code1 = 'for i in range(0,10): print (i)'
    >>> compile1 = compile(code1,'','exec')
    >>> exec (compile1)
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    
    >>> #简单求值表达式用eval
    >>> code2 = '1 + 2 + 3 + 4'
    >>> compile2 = compile(code2,'','eval')
    >>> eval(compile2)
    10
    
    
    >>> #交互语句用single
    >>> code3 = 'name = input("please input your name:")'
    >>> compile3 = compile(code3,'','single')
    >>> name #执行前name变量不存在
    Traceback (most recent call last):
      File "<pyshell#29>", line 1, in <module>
        name
    NameError: name 'name' is not defined
    >>> exec(compile3) #执行时显示交互命令,提示输入
    please input your name:'pythoner'
    >>> name #执行后name变量有值
    "'pythoner'"

     

     

    转载于:https://www.cnblogs.com/sesshoumaru/p/bulitin-function-compile.html

    展开全文
  • python之compile函数

    千次阅读 2019-06-25 15:51:17
    compile 函数用于编译正则表达式,返回一个正则表达式对象,供 match()、search() 、findall()等函数使用。 格式:re.compile(正则表达式【, 标志位】) import re a ='a1b2c3d4e5f6' pattern = re.compile('\d') # ...

    compile 函数用于编译正则表达式,返回一个正则表达式对象,供 match()、search() 、findall()等函数使用。
    格式:re.compile(正则表达式【, 标志位】)

    import re
    a ='a1b2c3d4e5f6'
    pattern = re.compile('\d')  # 匹配数字
    s = pattern.match(a)        # 查找头部,没有匹配
    print(s)                
    s = pattern.match(a,1,10)   # 查找从索引 1 开始10结束
    print(s)                    # 返回一个 Match 对象
    

    在这里插入图片描述

    import re
    a ='a1b2c3d4e5f6'
    pattern = re.compile('\d')  # 匹配数字
    s = pattern.findall(a)      # 查找头部,没有匹配
    print(s)                    # 返回一个列表
    s = pattern.findall(a,5,10) # 查找从索引 5 开始10结束
    print(s)  
    

    在这里插入图片描述

    展开全文
  • re.compile 函数

    千次阅读 2019-07-24 14:20:53
    re.compile:   编译正则表达式模式,返回一个对象。可以把常用的正则表达式编译成正则表达式对象,方便后续调用及提高效率。 re.compile(pattern, flags=0) pattern 指定编译时的表达式字符串 flags 编译标志位...
  • Compile、Make和Build的区别

    千次阅读 2012-09-03 00:27:42
    Compile、Make和Build的区别   VC++6.0中Compile和Build的区别 转载自:http://blog.csdn.net/fanzheng220112583/article/details/7780250   "compile"是“编译”的意思,“build”是...
  • angularjs的$compile用法

    千次阅读 2018-01-22 16:34:53
    angularjs里比较重要但又很少手动调用的要属$compile服务了,通常在写组件或指令时,都是angularjs自动编译完成的,但有时我们可能需要手动编译,比如封装一个table组件,根据参数实现自定义渲染,增加一列复选框...
  • QQ交流群:668524118 在上上一篇文章《Android Studio 3.0版本正式发布啦》(可点击传送)中说到AS 3.0 正式版已经出来了,讲到新版本支持的一些新特性,那么今天就来说说新版本中 Moudle 中 build.gradle ...
  • 这个函数用来编译一段字符串的源码,结果可以生成字节码或者AST(抽像语法树),字节码可以使用函数exec()来执行,而AST可以使用eval()来继续编译。 参数source是一串字符串的源码,或者是AST对象数组。...
  • 本系列文章主要目的是介绍CCS使用入门及在实际项目开发过程中有用的技巧及方法,第3篇介绍如何在同一个workspace下面管理工程以及相应CCS文件的介绍。
  • Theano介绍及简单应用

    千次阅读 2017-10-15 10:32:14
    Theano介绍及简单应用 一、课程介绍 1.课程说明 ...本次课程主要是为引导大家入门几个常用的深度学习框架。在课程中有关各种算法的详细推导及思想我们不会做过多的陈诉,旨在通过让同学们动手操作搭建自己的神经...
  • python re.compile() 详解——Python正则表达式

    万次阅读 多人点赞 2019-01-17 17:12:44
    1 概述 当我们在Python中使用正则表达式时,re模块内部会干两件事情: 编译正则表达式,如果正则表达式的字符串本身不合法,会报错; 用编译后的正则表达式去匹配字符串。...2 compile() 预编译十分的简单,re.co...
  • build和compile的区别[编程语言]

    万次阅读 2012-08-27 19:21:05
    最近想到一个问题,在写完代码之后运行之前需要编译一下,但是还有一个build功能,这两个到底有没有区别呢? 网上查了一下,buid比compile强大一点。运行的时候就知道,时间是不一样的... COMPILE = COMPILE = R
  • Python 正则re模块之compile()和findall()详解

    万次阅读 多人点赞 2016-04-13 15:46:13
    下面是Python3.5官方文档里关于的compile的说明: re.compile(pattern, flags=0) Compile a regular expression pattern into a regular expression object, which can be used for matching using its match() and ...
  • python 中 re.sub 和 re.compile 是啥意思?

    千次阅读 2019-06-13 15:45:48
    在python中re是一个常用的模块,主要...正则表达式也是一种语言,所以如果通过re.compile把它编译成对象,会速度快很多。所以我们经常看到这样的语句: exp = re.compile("\S+") m = exp.search(bigtext) print m.gr...
  • python 中的 re.compile 函数

    千次阅读 2018-09-05 17:02:52
    1. 使用re.compile re模块中包含一个重要函数是compile(pattern [, flags]) ,该函数根据包含的正则表达式的字符串创建模式对象。可以实现更有效率的匹配。在直接使用字符串表示的正则表达式进行search,match和find...
  • CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:...
  • compile与link区别

    千次阅读 2016-09-21 21:53:19
    compile函数的作用是对指令的模板进行转换。 link的作用是在模型和视图之间建立联系,包括在元素上注册事件监听。elem.on('change',funcion(){...}) scope在link阶段才会被绑定到元素上,所以在compile阶段操作...
  • 关于idea里Compile、Make、Build三个选项

    千次阅读 2018-12-08 17:46:23
    针对Java的开发工具,一般都有Compile、Make和Build三个菜单项,完成的功能的都差不多,这三个选项最基本的功能都是完成编译过程。但又有很大的区别,区别如下: 1、Compile:*编译单个文件* 只编译选定的目标,不管...
  • model.compile()函数

    2020-08-15 11:14:47
    model.compile()函数 model.compile (optimizer=Adam(lr=1e-4), loss=’binary_crossentropy’, metrics=[‘accuracy’]) optimizer:优化器,如Adam loss:计算损失,这里用的是交叉熵损失 metrics: 列表,包含评估...
1 2 3 4 5 ... 20
收藏数 459,998
精华内容 183,999
关键字:

compile