python 字符串操作及正则表达式
格式化:%,strip,lstrip,rstrip
查找:find,index,startswith,endswith,rfind,rindex ,re search ,match, findall
替换:replace
连接:join
分解:split
正则表达式:
大多数模式都是由字符、元字符和转义序列等基本元素组合而成的
元字符:metacharacters。是正则表达式的一种语法元素。元字符对其自身进行匹配。
元字符的任务是对一个或者多个字符进行重复、分组、置位或分类。
重复元字符:?、+ *
字符类:指定了要在一个字符串中匹配的一组字符。
特殊序列:常用字符类的快捷方式。
\d: 数据位,相当于[0-9]
\D:数据位取反,相当于 [^0-9]
\s:空白字符类,相当于[\n\f\r\t\v]
\S:对空白字符类取反,相当于[^\n\f\r\t\v]
\w:字母、数字类,相当于[a-zA-Z0-9]
\W对字母,数字求反,相当于[^a-zA-Z0-9]
\\反斜杠
元字符【和】代表一个正则表达式类。包含一个类的正则表达式与类中的单个字符想匹配。
元字符(和)标明一个组,好处:调用re.match返回一个对象SRE_Mathch对象,该对象的groups()方法返回一个子字符串列表,其中每个子字符串都对应于和正则表达式中的一个组匹配的子字符串。 坏处:元字符+和* 贪吃运算符,试图匹配尽量多的字符。
pathString = "/books/2001/python"
expression1 = "(/.+)/" greedy
expression2 = "(/.+?)/" no greedy
一个实例,有一段html代码,不符合xml格式规范,所以要用python对它进行下转换。 其中要转换的地方有:
1、[&]转为[&](但是不能把[ ]转了); 2、把代码中的["=""]去掉; 3、把[svg]和[path]标签都改为[svg:svg]和[svg:path]; 4、关闭[img]标签; 5、将url()中的["]转为[']
使用正则对html进行了处理。 下面就是代码:
import re
str_url = 'test, url("http://www.baidu.com")&,dddddd "="" <svg></svg><path></path><img src="http://www.baidu.com">ininnnin<img src="http://www.dd.com">'
#2、把代码中的["=""]去掉;
#3、把[svg]和[path]标签都改为[svg:svg]和[svg:path];
str_url = str_url.replace('"=""','')
str_url = str_url.replace('svg','svg:svg')
str_url = str_url.replace('path', 'svg:path')
#1、[&]转为[&](但是不能把[ ]转了);
url_re = re.compile('&(?!\w{4};)')
str_result = url_re.sub('&', str_url)
#4、关闭[img]标签;
img_list = re.findall('<img.*?>',str_result)
for img_r in img_list:
str_result = str_result.replace(img_r,img_r + '</img>')
#5、将url()中的["]转为[']
url_list = re.findall('url\(".*?"\)',str_result)
print url_list
for url_r in url_list:
url_new = url_r.replace('"','\'')
str_result = str_result.replace(url_r,url_new)
print str_result