1、python中的正则表达式应用
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string, flags=0)
pattern | 匹配的正则表达式 |
string | 要匹配的字符串。 |
flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志 |
re.search 扫描整个字符串并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
re.finditer和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
- re.I 忽略大小写
- re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
- re.M 多行模式
- re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
- re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
- re.X 为了增加可读性,忽略空格和 # 后面的注释
参考:https://www.cnblogs.com/feifeifeisir/p/10627474.html
2、python中的字典集合分组
假设以下有以下字典集合数据,需要通过日期分组:
首先按照对日期字段进行排序,然后调用itertools.groupby()函数:
groupby()函数在每次迭代的时候,会返回一个分组后的日期值和一个迭代器对象,迭代器对象包含对应日期值的所有对象。
occurrences.sort(key = itemgetter('order')) # 按照对order字段进行排序
for middle,items in groupby(occurrences,key = itemgetter('middle')): 。
lists = list(items) # 迭代器只能迭代一次,所以转化为列表进行操作
if len(lists) > 1: # 每类分组中需要至少两组数据才能形成模式
eachpatterns = GroupByUrl(lists)
patterns = patterns + eachpatterns
注:在使用groupby函数有一个很重要的步骤,就是我们要在使用groupby函数前,使用itemgetter函数将字典进行排序。如果没有排序,我们是得不到想要的结果。
参考:集合中的 字典分组 https://blog.csdn.net/a575553272/article/details/80415919
3、获取字典集合分组后的每组长度
可以将其转换为这样的列表:
clusterList = list(clusterList)
或者做到这一点,一步到位:
length = len(list(clusterList))
但是貌似迭代器只能迭代一次,需要转化后进行操作,具体待考证
参考:http://www.voidcn.com/article/p-dzmtrvav-bsw.html
4、python中字符串分割
通过split()方法切割字符串
str.split(str="", num=string.count(str)).
- str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num -- 分割次数。默认为 -1, 即分隔所有。
参考:https://www.runoob.com/python/att-string-split.html
5、python合并集合和列表
合并两个集合:
a = {1,2,3}
b = {3,4,5}
c = a | b
合并两个列表用+运算即可:
a = [1,2,3]
b = [4,5,6]
c = a + b