代码整理
核心是把pump模型分析透彻
理解R中的for循环结构
for (name in seq){exp}
name是循环变量,每次循环时,name都从seq中取值,然后执行exp的语句,当name不在seq中时,循环终止。
Python正则化
1.正则表达式用于在文本中查找匹配的字符串,Python中的数量词默认是贪婪的,即获取"ab",将找到"abbb"。
一般字符 | 匹配规则 | 格式 | 匹配的字符情况 |
---|---|---|---|
\ | 转义字符 | \ . | . |
. | 匹配除换行符\n之外的所有字符 | ||
[] | 匹配字符集中的任意字符 | [abc] | a,b,c |
\s | 匹配空白字符 | a\sb | a b,a b,… |
\S | 匹配非空白字符 | a\Sb | ab,a1b,acb,… |
\w | 匹配单词字符 | a\wb | acb,aCb,… |
\W | 匹配非单词字符 | a\Wb | a-b,a?b,… |
\d | 匹配数字 | a\dc | a1b,a2b,… |
\D | 匹配非数字 | a\Dc | acd,aCd,… |
限定匹配前一个字符的次数
*或者+ | 匹配前一个字符0到无限次 | a*b | ab,aab,… |
---|---|---|---|
? | 匹配前一个字符0或1次 | a?b | b,ab |
{m} | 匹配前一个字符m次 | a{2}b | aab |
{m,n} | 匹配前一个字符m至n次,m省略,表示0-n,m省略,表示m-无限次 | a{2,3}b | aab,aaab |
*? +? ?? {m}? {m,n}? | 使得*,+,?,{m},{m,n}变为非贪婪模式 |
限定边界
$ | 匹配字符串末尾(多行模式下时匹配每一行字符串的末尾 | c$ | abc,12c,?-c,… |
---|---|---|---|
^ | 匹配字符串的开头(多行模式下是每一行字符串的开头 | ^c | cab,c12,c??,… |
\A | 匹配整个字符串的开头 | \Ac | cab,… |
\Z | 匹配整个字符串的末尾 | c\Z | abc,… |
逻辑、分组
I | 或者,匹配左边或者右边的表达式 | abcIdef | abc,def |
---|---|---|---|
(…) | 括号内为一组;分组有编号,从1开始记;分组作为一个整体,I只在分组内部有效 | (abc){1}.(123 | 456)+ |
(?P…) | 除编号外的另一个分组名 | ||
<number> | 引用编号为的分组匹配的字符串 | (\d)abc\1 | 5abc5,… |
(?P=name) | 引用别名为的分组匹配到的字符串 | (?P=\d)abc(?P=one) | 7abc7,… |
特殊构造
(?iLmsux) | iLmsux每个字符代表一个匹配模式 | (?!abc) | Abc,abc,… |
---|---|---|---|
(?#…) | #之后的内容作为注释被忽略 | ||
(?=…) | ***之后的字符串内容需要匹配表达式,不消耗字符串内容 | *** | |
(?!..) | 之后的字符串内容不需要匹配表达式,不消耗字符串内容 | ||
(?<=…) | 之后的字符串内容需要匹配表达式,不消耗字符串内容 | ||
(?<!..) | 之后的字符串内容需要不匹配表达式,不消耗字符串内容 |
2.中文字符集?
3.re模块常用方法
compile():编译正则表达式,生成一个正则表达式对象,供match()和search()这两个函数使用
pa=re.compile(‘et’)
正则表达式对象的方法:
group() 返回被re匹配的字符串
start() 返回匹配开始的位置
end() 返回一个元组包含匹配(开始,结束)的位置
常用方法:
match():尝试从字符串的起始位置匹配一个模式,如果不是在起始位置匹配成功的话,match()就返回none
search():扫描整个字符串并返回第一个成功的匹配
findall():在字符串中找到正则表达式要匹配的所有子串,并返回一个列表,如果没有找到匹配的子串,则返回空列表,可指定起始位置。
finditer():和findall类似,在字符串中所匹配的所有子串,并把它们作为一个迭代器返回。
sub():替换字符串中所有的匹配项,返回匹配后的字符串。
split():按照能够匹配的子串将字符串分割后返回列表,可指定最大分割次数。