正则提取关键字符-python代码实现
原文地址:http://www.bugingcode.com/blog/python_re_extraction_key.html
关于python
的正则使用在以前的文章中 http://www.bugingcode.com/blog/python_regular_expressions.html ,都有介绍,但是这边文章比较大,内容讲的不够细,这里专门讲如何用python正则匹配到自己需要的字符串。
正则提取数据
还是以url字符串来进行匹配:http://www.bugingcode.com/blog/python_regular_expressions.html,url的字符串有明显的一样,bugingcode
为域名,blog
为目录名,python_regular_expressions
为文章的名称。在这里需要把这三个字符串都提取出来。
贪婪和非贪婪匹配
查看正则匹配规则:
.
: 匹配任意除换行符"\n"外的字符
+
: 匹配前面字符1次到无限次
在我们可以用/
来对提取的字符进行限制,也就是卡死头和尾,看看会得到什么样的结果。
import re
str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"/(.+)/",str)
会输出什么样的结果呢?
有人猜结果:
['/www.bugingcode.com','blog']
不可能出现这种结果的,因为r"/(.+)/"
中已经把/
用掉了,往下匹配已经找不到/
号了。
有人猜结果:
['/www.bugingcode.com']
也有人猜:
['/www.bugingcode.com/blog']
这是关于正则表达式的贪婪和非贪婪匹配,简单的记住正则匹配中有出现 ?
才是 非贪婪匹配,这里的正则匹配是贪婪的,也就是最大的匹配情况,一般来说我们选用的是非贪婪
模式。
import re
str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"//(.+?)/",str)
匹配的结果为:
['www.bugingcode.com']
提取所有需要的字段
刚才说了一个(.+?)
只能匹配到一个字符串,而我们需要提取 三个字段:bugingcode
为域名,blog
为目录名,python_regular_expressions
。
import re
str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"www.(.+?).com/(.+?)/(.+?).html", str)
输出如下我们需要的结果:
[('bugingcode', 'blog', 'python_regular_expressions')]
再来一个看看是什么结果:
import re
str = "http://www.bugingcode.com/blog/python_regular_expressions.htmlhttp://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"www.(.+?).com/(.+?)/(.+?).html", str)
有的时候需要提取的字符串比较复杂是,可以通过不断的进行尝试,先把条件放的比较苛刻,后面在慢慢的放开,找到自己需要的字符串。
转载请标明来之:http://www.bugingcode.com/
更多教程:阿猫学编程
正则提取关键字符-python代码实现的更多相关文章
- python中的关键字符
from keyword import kwlistprint(kwlist)for i in kwlist: print(i) 可以显示所有的关键字符,开发者不要重新赋予其他值. a = 10000 ...
- python+正则提取+ip代理爬取糗事百科文字信息
很多网站都有反爬措施,最常见的就是封ip,请求次数过多服务器会拒绝连接,如图: 在程序中设置一个代理ip,可有效的解决这种问题,代码如下: # 需要的库 import requests import ...
- Python正则提取数据单引号内数据,并判断是否是空列表(是否提取到数据)
#coding=utf- import re string1="asdfgh'355'dfsfas" string2="fafafasfasdfasdf" pa ...
- 字符编码和Python代码操作文件
字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...
- 员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...
- 使用Python提取中文字符
#功能:国际化测试,用于提取应用设计包中的中文字符,并输出report#解压---筛选---整理路径---提取中文---输出报告 ################################### ...
- Python 代码实现模糊查询
Python 代码实现模糊查询 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列 ...
- Python代码样例列表
扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│ Python用户推荐系统曼哈顿算法实现.py│ ...
- 10 行 Python 代码实现模糊查询/智能提示
10 行 Python 代码实现模糊查询/智能提示 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的 ...
随机推荐
- 2.Jenkins结合k8s完成Jenkins slave功能
1.构建镜像 下载基础镜像,这里使用openvz的包,下载地址为:https://wiki.openvz.org/Download/template/precreated,下载centos7的镜像 下 ...
- Python筛法求素数
l=[2]m,n=input().split()m=int(m)n=int(n) for i in range(m,n): flag=True for j in l: if i%j==0:#如果当前值 ...
- endnote插入|管理文件|成组
信息检索 Endnote Filter(导入)---library(管理)---style(导出) 本地+网络数据库 点击research 在WOS上: 导入改文献: CNKI 导入PDF时选择PDF ...
- console.log和alert的区别
alert是同步的,如果不关闭弹出框,js代码就不会继续执行下去,这时候浏览器啥都干不了. console.log不会打断js的执行. 当要输出几十几百条信息的时候还是得用console.log,而且 ...
- github新手使用教程
1.首先打开https://github.com/官网 注册一个github账号 2.注册成功之后,登录账号,创建一个属于自己的库 3.创建完成之后,为了方便电脑上的代码上传到github 仓库上,要 ...
- BTree
hash.平衡二叉树.BTree.B+tree的区别 https://blog.csdn.net/qq_40673786/article/details/90082444 联合索引在B+树上的结构介绍 ...
- Utf8BomRemover
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...
- Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionExcep linux下mysql修改连接超时wait_timeout修改后就ok了
Linux下mysql修改连接超时wait_timeout 1,首先: show variables like '%timeout%': 显示结果: +------------------------ ...
- 系统学习Javaweb6----JavaScript2
感想:感觉自己还是只是学到皮毛,仍需继续努力,明天开始需要学习Android和阅读感想的书写. 学习笔记: 2.3.运算符 JavaScript运算符与java运算符基本一致. 这里我们来寻找不同点进 ...
- reviewer回信
收到reviewer回信之后的情况 Peer review其实是一个CA(质检)过程.文章投稿后的几种状态:Reject.resubmit和revise-and-resubmit. 收到回信之后,re ...