一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullmatch.findall.finditer>重点介绍了几个搜索函数,后续章节将介绍re模块的其他函数,本节先介绍re.split函数的功能. 二. 语法释义 调用语法: re.split(pattern, string, maxsplit=0, flags=0) 参数及返回结果释义: 1)这个函数的功能…
一. 引言 在<第11.3节 Python正则表达式搜索支持函数search.match.fullmatch.findall.finditer>重点介绍了几个搜索函数,除了搜索,re模块也提供搜索并替换功能,这个就是re模块的sub函数. 二. 语法释义 调用语法: re.sub(pattern, repl, string, count=0, flags=0) re.subn(pattern, repl, string, count=0, flags=0) 参数: 1)pattern:匹配的正…
匹配对象是Python中re模块正则表达式匹配处理的返回结果,用于存放匹配的情况.老猿认为匹配对象更多的应该是与组匹配模式的功能对应的,只是没有使用组匹配模式的正则表达式整体作为组0. 为了说明下面的属性和方法,以如下命名组匹配模式串和搜索文本作为例子来介绍: >>> pattern='<h1 class="name">(?P<name>.*)</h1><h1 class="age">(?P<a…
一. re.compile函数 正则表达式编译函数,在后面章节专门介绍. 二. re.escape(pattern) re.escape是一个工具函数,用于对字符串pattern中所有可能被视为正则表达式运算符的字符进行转义.使用这个函数的情况有:字符串很长,其中包含大量特殊字符,而你不想输入大量的反斜杠:从用户那里获取了一个字符串(例如,通过函数input),想将其用于正则表达式中,此时对特殊字符的位置是不可预知的,调用re.escape就可以解决这些不可预知的状况.但如果pattern中已经…
第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.super简介 1.        super方法返回一个"super"类型的对象,注意是一个新的类型,并不是父类: 2.    使用"super().方法名"调用并不是用于直接调用当前类的父类的方法,而是Python根据MRO算法去所有父类中查找找到的第一个与"…
一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视断言(lookbehind assertion) 后视断言又称为正向后视断言.后视断定.后行断言等,与前视断言功能类似,只是前视断言是找匹配串的右边要与前视断言指定的模式匹配,而后视断言是找匹配串的左边要与后视断言指定的模式匹配. 语法:(?<=-),其中-为一个子正则表达式 例子: 要使用后视断言查找…
一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中正则表达式的扩展功能非常多,所有扩展功能都是在左括号后面跟问号"?"来表示,具体扩展功能是要看问号后面的字符来确认,如"P"表示组名相关扩展. 下面老猿将未介绍的主要正则表达式扩展功能在本节进行介绍,下面介绍的扩展功能中的"-"都表示一个合法的子模式…
一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是组模式的扩展功能,其实在re模块中组模式的扩展功能非常多,所有组模式的扩展功能,都是在组定义的左括号后面跟问号"?"来表示,具体扩展功能是要看问号后面的字符来确认,如"P"表示组名相关扩展. 下面介绍组匹配模式扩展功能的前视断言和前视取反,本节继本章后面介绍的扩展功能中组的括号内…
python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('-|_','sharejs_haotu-icon100') 输出结果如下: ['sharejs', 'haotu', 'icon100']  …
Python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('_#|','this_is#a|test') 1 2 1 2 返回的是一个列表(list),输出结果如下: ['this', 'is', 'a', 'test']…
为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试. 一. 测试程序说明 该程序允许测试人员选择一个文件,自己输入文件打开模式.写入文件的位置以及写入内容,程序按照输入尝试进行文件打开和写入,当打开异常或定位文件写入位置异常时会要求重新选择.最后写入文件时判断文件打开模式是否为二进制,以确认写入时的数据是否需要进行编码处理. 二. 老猿验证的一些结论 xwa模式不能一起出现: w模式写入,会覆盖原文件,如果指定偏移量就在对应偏移位置直接写,前面内容直接为ASC…
本文中所有案例中的fp都是使用open函数打开文件返回的一个文件对象,为了节省篇幅,大部分没有提供文件打开的代码. 一. 文件是否关闭的属性 属性名:closed 功用:判断文件是否关闭 示例: >>> fp = open(r"c:\temp\test.txt","r") >>> fp.closed False 二. 文件关闭close 调用语法:close() 功能:将缓存内容刷新到存储,并关闭文件 示例:fp.close()…
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访问标签.内容,但这种方法要么就只能访问符合条件的第一个对象,要么需要遍历访问对象,某些情况下不能通过指定特征快速定位标签和内容.本节将介绍使用BeautifulSoup提供的相关方法快速定位标签和内容的方法.本节继续复用<第14.10节 Python中使用BeautifulSoup解析http报文:ht…
一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullmatch.findall.finditer>重点介绍了几个搜索函数.这些介绍的搜索函数都是直接使用正则表达式去匹配搜索文本,实际上re模块还支持将正则表达式先编译再搜索匹配,这种先编译后搜索在同一个正则表达式多次去执行匹配时可以提高匹配执行效率. 二. re.compile函数 语法:compile(p…
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做…
在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 怎样进行日志记录相关配置 日志记录使用常见误区 下面我们来梳理一下整个演讲的过程,其实其核心就是介绍了 logging 模块的使用方法和一些配置. 日志记录的重要性 在开发过程中,如果程序运行出现了问题,我们是可以使用我们自己的 Debug 工具来检测到到底是哪一步出现了问题,如果出现了问题的话,…
符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而match是通过函数来指定. 在 MULTILINE 模式(搜索标记中包含re.MULTILINE,关于搜索标记的含义请见<第11.2节 Python re模块函数概览>)下,本匹配模式是按行來搜索的,即只要多行文本中存在有搜索模式指定的字符串开头的行,也被认为是搜索到了指定串.而match不具备此…
在re模块中,任意字符匹配使用"."(点)来表示, 在默认模式下,点匹配除了换行的任意字符.如果指定了搜索标记re.DOTALL ,它将匹配包括换行符的任意字符.关于搜索标记的含义请见<第11.2节 Python re模块函数概览>. 注意: 1. 一个点只能匹配一个字符: 2. 点在字符集中仅匹配自身,不能匹配任意字符. 案例: >>> re.search("...txt",'Ab2019.txt') <re.Match obj…
为了支持特殊元字符在特定场景下能表示自身而不会被当成元字符进行匹配出来,可以通过字符集或转义符表示方法来表示,字符集表示方法前面在<第11.4节 Python正则表达式搜索字符集匹配功能及元字符"[]"介绍>进行了介绍,本节介绍转义符表示方法. 在re模块中,为了让元字符能表示自身,可以在元字符前面增加转义符反斜杠"\",这个转义符的使用可以看到与Python字符串的转义符是完全相同的.re模块转义符和Python字符串转义符相同会导致在re模块进行转义…
符号"$"表示匹配字符串的结尾,即字符串的结尾满足匹配模式的要求. 在 MULTILINE 模式(搜索标记中包含re.MULTILINE,关于搜索标记的含义请见<第11.2节 Python re模块函数概览>)下,本匹配模式是按行來搜索的,即只要多行文本中存在有搜索模式指定的字符串结尾的行,也被认为是搜索到了指定串. 注意: 1.'$'在匹配模式中必须为最后一个字符,不在最后一个字符位置则无效: 2.'$'在字符集中仅匹配自身: 3.匹配字符串结尾时是不含换行符的,即换行符…
一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>介绍了组匹配模式,在一个正则表达式内可以定义多个组,每个组都有一个顺序分配的序号,并且在代表匹配结果的匹配对象中能通过组序号去访问每个组的匹配结果.除了这种组序号访问方式之外,re模块还支持在匹配模式串中给组命名,并通过组名去访问组相关匹配数据,这就是正则表达式处理的命名组功能. 二. 语法 组命名的语法是在组匹配模式基础上扩展的,是在组的括号起始部分增加"?P&l…
一. 引言 在前面<第11.13节 Python正则表达式的转义符"\"功能介绍>介绍了正则表达式转义符'\',只不过当时作为转义符主要是用于在正则表达式中表示元字符自身的需要进行的转义.实际上,除了元字符使用转义符外,Python还支持由'\'和一个ASCII数字或ASCII字母字符组成的特殊序列,这些特殊代表特殊的含义. 如果'\'后面跟的字符不是ASCII数字或者ASCII字母,那么正则样式将直接匹配后面跟的字符,如'\$' 匹配字符 '$'. 二. 特殊序列 \nu…
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8…
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于python中re模块split方法的使用 已有 3094 次阅读 2014-3-12 11:30 |系统分类:科研笔记 今天在写一段小代码的时候需要用到re.split()方法,在使用的过程中发现了一个以前不知道的新用法,发现这个用法还是挺实用的,就把它记录下来: >>> m = re.s…
1 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定义的对象,可用于引入过程(也称为importer). 什么是imp?另外有一个叫做imp的模块,它提供给Python import语句机制的接口.这个模块在Python 3.4中被否决,目的就是为了只使用importlib. 这个模块有些复杂,因此我们在这篇博文中主要讨论以下几个主题: 动态引入 检…
正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则表达式的神器网站:http://tool.chinaz.com/regex 大家可以去这里练习正则表达式 正则表达式 使用场景 关于正则表达式的基本概念这里就不赘述了,大家可以去各种百科里查找它的定义.正则的使用场景主要分为两个: 一是:检测某一段字符串是否符合规则,也就是我们常说的"校验"…
python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(键=值).使用的配置文件的好处就是不用在程序员写死,可以使程序更灵活. 目录 三种创建方法 增删改查 三种创建方法 程序示例: import configparser #实例化出来一个类,相当于生成一个空字典 config = configparser.ConfigPar…
目录 前言 基础 模块化程序设计 模块化有哪些好处? 什么是 python 中的模块? 引入模块有几种方式? 模块的查找顺序 模块中包含执行语句的情况 用 dir() 函数来窥探模块 python 的内置模块有哪些? 结语 参考文档 系列文章列表 前言 这次我们继续探险,来搞定 python 中的模块(module).兵马未动,粮草先行,开工之前先看看基础是否补齐了^_^. 基础 模块的概念你一定不会陌生吧,这是一个非常宽泛的概念,在各行各业都会用到.这里我们涉及的只是软件中的模块概念.说到模块…
python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(键=值).使用的配置文件的好处就是不用在程序员写死,可以使程序更灵活. 三种创建方法 程序示例: import configparser #实例化出来一个类,相当于生成一个空字典 config = configparser.ConfigParser() #创建也…
第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一.    引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不是以继承关系为标准,在各种调用中,不会显式地指定对象必须包含哪些方法才能用作参数,而是假设所有对象都能完成其工作,在执行时去调用特定协议的方法来执行,因此Python并不推荐在代码中去进行类型检查和属性检查.但为了提供一种可以要求实现对象遵循对应协议.提供所有特定功能集的方法,Python提供了抽象…