字符串对象方法
Python中的split方法可以将字符串拆成多块,可传入参数表示分隔符,如不传入参数默认分隔符为空格
1 2 3
| val = 'a,b, guido' print(val.split(',')) ==> ['a', 'b', ' guido']
|
可以用in关键字判断是否是子字符串
1 2 3
| val = 'a,b, guido' print('guido' in val) ==> True
|
其他一些函数见下表
正则表达式
单个正则表达式通常称为regex,python库中内建的re模块是用于将正则表达式应用到字符串上的库。
正则表达式主要有三个主题:模式匹配、替代、拆分
可以使用re.split(‘正则表达式’,’原串’)来进行字符串的划分
1 2 3 4
| text = "foo bar\t baz \tqux"
print(re.split('\s+',text)) ==> ['foo', 'bar', 'baz', 'qux']
|
可以调用re的compile方法实现对正则表达式的复用
1 2 3 4
| text = "foo bar\t baz \tqux" regex = re.compile('\s+') print(regex.split(text)) ==> ['foo', 'bar', 'baz', 'qux']
|
findall可以将所有匹配正则表达式的模式的列表输出
1 2 3 4
| text = "foo bar\t baz \tqux" regex = re.compile('\s+') print(regex.findall(text)) ==> [' ', '\t ', ' \t']
|
Tips: 在字符串前加一个r代表使用原生字符串,不受转义字符等干扰
比如说我们要识别电子邮件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| text = """Dave dave@google.com Steve steve@gmail.com Rob rob@gmail.com Ryan ryan@yahoo.com """ pattern = r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}' regex = re.compile(pattern, flags=re.IGNORECASE)
print(regex.findall(text)) ==> ['dave@google.com', 'steve@gmail.com', 'rob@gmail.com', 'ryan@yahoo.com']
print(regex.search(text)) ==> <re.Match object; span=(5, 20), match='dave@google.com'>
print(regex.match(text)) ==> None
print(regex.sub('lakers',text)) ==> Dave lakers Steve lakers Rob lakers Ryan lakers
|
下表是一些有关函数的简表:
pandas中的向量化字符串函数
这里主要指的是对于DataFrames中的一些字符进行操作
下面是一些向量化方法: