正则提取关键字符-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)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的 ...
随机推荐
- 微信小程序2048开发进度(二)
对小程序首先进行游戏架构: 实现小程序的首页展示界面,初始化棋盘格,以及NEW GAME按钮,成绩展现.
- 01.Homebrew
1.homebrew 的安装 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/ ...
- httpsqs 源码修改(内部自动复制多队列)
/* HTTP Simple Queue Service - httpsqs v1.7 Author: Zhang Yan (http://blog.s135.com), E-mail: net@s1 ...
- ubuntu Elasticsearch环境搭建
https://www.cnblogs.com/pigzhu/p/4705870.html
- day49-线程-事件
#1.Event里面有一个标志flag,当e = Event()刚创建的时候,flag=False,阻塞,这个时候,e.is_set()也是等于False,阻塞. #e.set()让flag变成非阻塞 ...
- SVN一直清理解决
svn作为我们经常使用的版本管理服务器,在使用过程中经常需要通过clean up操作来完成本地文件与服务器文件信息及版本信息同步,然而有时会在执行清理命令时提示“清理失败,请执行清理”,并且提示的中文 ...
- TPO4-2 Cave Art in Europe
Perhaps, like many contemporary peoples, Upper Paleolithic men and women believed that the drawing o ...
- 再来看看Java8的新特征——lambda表达式
什么是lambda表达式? 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. 比如说new一个Thr ...
- Python语言学习前提:python安装和pycharm安装
一.Windows系统python安装 1.python官网:https://www.python.org/downloads/ 2.官网首页:点击Downloads > Windows > ...
- Caused by: java.io.FileNotFoundException: class path resource [../../resources/config/spring.xml] cannot be opened because it does not exist
在尝试使用Spring的Test的时候遇到了这个错误 原来的代码: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loca ...