python 字符串处理

import pandas as pd
import numpy as np

df_test = pd.DataFrame({'test_value':['a1','aa1','b1','b2','A2','AA2','Aa2',\
                                      'are u ok','u are not ok','uu are okey']})

df_test.png

-1. str.contains(pat, case=True, flags=0, na=False, regex=True )

pat : str类型
字符序列或正则表达式。

case : bool,默认为True
如果为True,区分大小写。

flags : int,默认为0(无标志)
标志传递到re模块,例如re.IGNORECASE。

na : 默认NaN
填写缺失值的值。

regex : bool,默认为True
如果为True,则假定pat是正则表达式。

如果为False,则将pat视为文字字符串。

-2. 正则表达

pattern = '[a-z][0-9]' 
a = df_test[df_test['test_value'].str.contains(pattern,na=True)]

pattern2 = '(.*?)are(.*?)'
b = df_test[df_test['test_value'].str.contains(pattern2,na=False)]

[a-z] 表示小写字母a-z
[0-9] 表示数字0-9
(.*?)表示若干元素
df_test2.PNG

-3. startswith, endswith

c = df_test[df_test['test_value'].str.startswith('are',na=False)]
d = df_test[df_test['test_value'].str.endswith('ok',na=False)]

df_test3.PNG

- 4.不包含

用~或 == False

pattern = '[a-z][0-9]' 
e = df_test[~df_test['test_value'].str.contains(pattern,na=True)]
f = df_test[(df_test['test_value'].str.contains(pattern,na=True)==False)]

df_test.png

-5. 多个str选择

用 |

g = df_test[df_test['test_value'].str.contains('are|u',na=False)

-6. 字符串合并

s = pd.Series([‘a’, ‘b’, ‘c’, ‘d’], dtype=“string”)
s.str.cat(sep=’,’)

Out: ‘a,b,c,d’

t = pd.Series([‘a’, ‘b’, np.nan, ‘d’], dtype=“string”)
t.str.cat(sep=’,’, na_rep=’-’)

Out[61]: ‘a,b,-,d’

同时可以一个多个series进行合并:
s.str.cat(t,sep=’-’)
s.str.cat(pd.concat([s,t]),sep=’-’)
list: ‘-’.join([///])

-7.字符串分割

s.str.split(’-’,expand=True)[0]

-8.字符替代

s = s.replace(‘a’,‘b’) # a替换成b
s = s.replace([’\N’, ‘nan’],[np.nan,np.nan])

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值