Numpy_06_字符串处理(常用字符串函数详解)

1、字符串连接: np.char.add()

'''
np.char.add(x1, x2)

1、x1、x2两个数组必须要有相同的形状
2、x1、x2两个数组对应位置的元素进行拼接
3、返回的数据类型取决于输入的数据类型
'''
n1 = ['字符串','中国']
n2 = ['连接','万岁']

np.char.add(n1,n2)

输出:

array(['字符串连接', '中国万岁'], dtype='<U5')

2、按元素进行多重连接: np.char.multiply()

'''
np.char.multiply(a, i)

参数说明
1、a:字符串类型的数组
2、i:整型数据
        i <=0,变成空字符串

返回值:
(a * i),返回按a中哥元素分别*i倍的字符串多重连接的数组
'''
n1 = ['中国','人民']

# '中国'*2 = '中国中国'
result = np.char.multiply(n1,2)
result

输出:

array(['中国中国', '人民人民'], dtype='<U4'
# i =0,变成空字符串
# result = np.char.multiply(n1,-1),效果等同于i =0
result = np.char.multiply(n1,0)
result

输出:

array(['', ''], dtype='<U1')

3、数组元素居中: np.char.center()

'''
np.char.center(a, width, fillchar=' ')

参数说明
1、a:元素为字符串类型的数组
2、width:指定字符串总长度
3、fillchar:默认空格,两边空格填补,也可指定填充字符

返回值:
(a * i),返回按a中哥元素分别*i倍的字符串多重连接的数组
'''

# 字符串长度10,默认空格填充
np.char.center(n1,10)

输出:

array(['    中国    ', '    人民    '], dtype='<U10')

指定填充字符:fillchar

# 指定填充字符
np.char.center(n1,10,fillchar= '*')

输出:

array(['****中国****', '****人民****'], dtype='<U10')

4、字符串首字母大写: np.char.capitalize()

'''
np.char.capitalize(a)
数组a中每个元素的首字母大写
'''
n2 = ['my heart will go on',"i'm your best freind"]
np.char.capitalize(n2)

输出:

array(['My heart will go on', "I'm your best freind"], dtype='<U20')

5、字符串每个单词首字母大写: np.char.title()

'''
np.char.title(a)
数组a中每个元素中的每个单词首字母大写
'''
n2 = ['my heart will go on',"i'm your best freind"]
np.char.title(n2)

输出:

array(['My Heart Will Go On', "I'M Your Best Freind"], dtype='<U20')

6、字符串全部大写: np.char.upper()

n2 = ['abcd',"i'm your best freind"]
np.char.upper(n2)

输出:

array(['ABCD', "I'M YOUR BEST FREIND"], dtype='<U20')

7、字符串全部小写: np.char.lower()

n2 = ['ABCD',"I'm YOUR best freind"]
np.char.lower(n2)

输出:

array(['abcd', "i'm your best freind"], dtype='<U20')

8、按照指定字符分割字符串后再合并:np.char.join()

'''
np.char.join(sep1, seq2)

参数说明:
sep1:分隔符序列
seq2:字符串、数组序列
注意:
sep1和seq2要么形状一致,要么符合广播机制
'''
# 形状一致
n1 = ['-','^']
n2 = ['lili','bibi']

np.char.join(n1, n2)

输出:

array(['l-i-l-i', 'b^i^b^i'], dtype='<U7')
# 形状不一致,符合广播机制
n1 = ['-']
n2 = [['lili','nana'],['taotao','taotao']]

np.char.join(n1, n2)

输出:

array([['l-i-l-i', 'n-a-n-a'],
       ['t-a-o-t-a-o', 't-a-o-t-a-o']], dtype='<U11')

9、字符串切割 np.char.split()

'''
np.char.split(a, sep=None, maxsplit=None)

参数说明:
a:字符串或数组
sep:分隔符(若不指定,默认按空格切割)
maxsplit:最大切片数
'''
n4 = ['abcd',"i'm your best freind"]
np.char.split(n4)

输出:

array([list(['abcd']), list(["i'm", 'your', 'best', 'freind'])],
      dtype=object)

指定最大切割次数

# maxsplit = 3,最大切三次,分成四份
np.char.split(n3,'-',maxsplit = 3)

输出:

array([list(['n', 'a', 'n', 'a']), list(['t', 'a', 'o', 't-a-o'])],
      dtype=object)

10、字符串去除两侧空白 np.char.strip()

'''
np.char.strip(a, chars=None)

参数说明:
a:字符串或数组
chars:要去除的字符串两侧的字符,不指定默认去除字符串两侧空格

np.char.rstrip(a, chars=None)
去除字符串右侧空白字符或指定字符

np.char.lstrip(a, chars=None)
去除字符串左侧空白字符或指定字符
'''

n5 = [ " i'm your best freind  ",' a b c    ']
np.char.strip(n5)

输出:

array(["i'm your best freind", 'a b c'], dtype='<U23
n6 = [ "*i'm your best freind **",' a*b c*****']

# 指定要去除的字符串两侧的字符
np.char.strip(n6,chars= '*')

输出:

array(["i'm your best freind ", ' a*b c'], dtype='<U24')

11、字符串替换 np.char.replace()

'''
np.char.replace(a, old, new, count=None)

参数说明:
a:字符串或数组
old:原字符串
new:新字符串
count:每个元素中的指定字符的替换次数
'''

n7 = [['茶益道茶庄','庄腾酒庄'],['度假山庄的庄的庄','庄什么庄']]
np.char.replace(n7,'庄','duang')

输出:

array([['茶益道茶duang', 'duang腾酒duang'],
       ['度假山duang的duang的duang', 'duang什么duang']], dtype='<U20')

指定每个元素仅替换一次

np.char.replace(n7,'庄','duang',count=1)

输出:

array([['茶益道茶duang', 'duang腾酒庄'],
       ['度假山duang的庄的庄', 'duang什么庄']], dtype='<U12')

12、指定编码 np.char.encode()

'''
np.char.encode(a, encoding=None, errors=None)

参数说明:
a:数组
encoding:编码格式
errors:指定如何处理编码错误
'''
a = ['我','可爱']
b = np.char.encode(a)
b

输出:

array([b'\xe6\x88\x91', b'\xe5\x8f\xaf\xe7\x88\xb1'], dtype='|S6')

13、解码 np.char.decode()

np.char.decode(b)

输出:

array(['我', '可爱'], dtype='<U2'

14、字符串查询 np.char.find()

'''
np.char.find(a, sub, start=0, end=None)

参数说明:
a:数组
sub:查找的字符串

查找数组中每个元素是否包含指定字符,
若存在,返回在元素中的索引;若不存在,返回-1
'''

n7 = [['茶益道茶庄','度假酒店','庄什么庄']]

# 第二个元素中没有要查找的字符,返回-1
np.char.find(n7,'庄')

输出:

array([[ 4, -1,  0]])

15、判断字符串是否仅由中文汉字或者字母构成 np.char.isalpha()

'''
np.char.isalpha(a)

参数说明:
a:数组,如果数组中的元素仅由中文汉字或英文字母构成,返回True;
         否则返回False

返回布尔值
'''
a = ['abc12','man','我们','wo们','wo们*']
np.char.isalpha(a)

输出:

array([False,  True,  True,  True, False])

16、统计字符串个数 np.char.count()

'''
np.char.count(a, sub, start=0, end=None)

参数说明:
a:数组
sub:要查找的字符串

'''
a = [['茶益道茶庄','度假酒店','庄什么庄']]
np.char.count(a,'庄')

输出:

array([[1, 0, 2]])

17、根据字符串前缀查找数据 np.char.startswith()

'''
np.char.startswith(a, prefix, start=0, end=None)

参数说明:
a:数组
prefix:前缀

返回布尔值
'''
a = [['茶道茶庄','茶茶酒店','庄什么庄']]
np.char.startswith(a,'茶道')

输出:

array([[ True, False, False]])

18、根据字符串后缀查找数据 np.char.endswith()

'''
np.char.endswith(a, suffix, start=0, end=None)

参数说明:
a:数组
suffix:后缀

返回布尔值
'''
a = [['茶道茶庄','茶茶酒店','庄什么庄']]
np.char.endswith(a,'庄')

输出:

array([[ True, False,  True]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值