#!/usr/bin/env python
# coding: utf-8
#
Table of Contents
#
# In[1]:
#全部行都能输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
# In[2]:
import numpy as np
# # 字符串函数
# 基本和python内置的字符串方法一样
# ## 2个类似字符串元素的函数
# ### np.char.add(a, b)字符串的拼接,类似相对于字符串的+运算
# a b 是两个ndarray对象, 这两个对象的元素都必须全是字符串,其作用是把对应位置的字符串进行加法运算。
# 要求是a b的形状相同, 或者满足广播规则!
# In[3]:
a = np.array(['123', '456', '789'])
b = np.array(['asd', 'fgh', 'jkl'])
a
b
# In[4]:
np.char.add(a, b)
# 但是由于如果只含有bool型, 数值型, 字符串作为元素的时候, 会自动全部转化为字符串,所以也是可以的。
# In[5]:
a = np.array([True, 123, 12.45, '999']) # 会全部转化为字符串
b = np.array(['A', 'B', 'C', 'D'])
a
b
# In[6]:
np.char.add(a, b)
# ### np.char.multiply(a, i)字符串的重复, 类似字符串的*运算
# a是ndarray对象, 并且,a中的元素全部是字符串,i是一个整数。
# In[7]:
a = np.array(['123', '456', '789', 12])
a
# In[10]:
np.char.multiply(a, 6)
# ## 3个类似字符串检索的函数
# ### 计数np.char.count(a, object, 开始位置, 终止位置)
# In[11]:
a = np.array(['112,1', 'asda1', 'asd', 232])
a
# In[12]:
np.char.count(a, '1')
# In[13]:
np.char.count(a, '1', 1)
# ### 查找np.char.find(a, object, 开始位置, 终止位置)
# In[14]:
a = np.array(['112,1', 'asda1', 'asd', 232])
a
# In[15]:
np.char.find(a, '1') # 返回第一次出出现的索引 ,如果找不到返回-1
# In[16]:
np.char.find(a, '1', 2) # 在指定范围内查找, 如果找到就返回索引, 找不到返回-1
# In[ ]:
# ### 索引np.char.index(a, object, 开始位置, 终止位置)
# In[17]:
a = np.array(['112,a1', '1asda1', '11asd', 'a232'])
a
# In[18]:
np.char.index(a, 'a') # 返回第一次出现的索引
# In[19]:
np.char.index(a, '1') # 找不到就报错
# ## 三个分割的方法
# ### np.char.split(a, 分割符, 分割次数)
# In[20]:
a = np.array(['112,a1', '1asda1', '11asd', '1a232'])
a
# In[21]:
np.char.split(a, 'a') # 第三个参数不写默认全部分割, 返回的结果是以列表的形式存储
# In[22]:
np.char.split(a, 'a', 1) # 只分割一次
# In[ ]:
# ### np.char.splitlines(a, keepends=None)
# 分隔符只能是\r \n \r\n
# In[23]:
a = np.array(['112\n,a1', '1as\tda1', '11a\rsd', '1a2\r\n3 2'])
a
# In[24]:
np.char.splitlines(a, keepends=None)
# In[25]:
np.char.splitlines(a, keepends=True)
# In[ ]:
# ### np.char.partition(a, 分隔符)
# In[26]:
a = np.array(['122aa12', '232as', '1a1asas'])
a
# In[27]:
np.char.partition(a, 'a') # 返回的是一个二维数组, 保留分隔符
# ## 一个合并的方法
# ### np.char.join(a, b)
# 相当于对应位置上的字符串进行join方法
# In[28]:
a = np.array(['+', '-'])
a
# In[29]:
b = np.array(['1234', '5678'])
b
# In[30]:
np.char.join(a, b)
# ## 1个替换的方法
# ### np.char.replace(a, 被替换部分, 新的部分, 替换次数)
# In[31]:
a = np.array(['asdasd', 'asdqweasd', 'asddsfasdaaa'])
a
# In[32]:
np.char.replace(a, 'a', 'A') # 默认全部替换
# In[33]:
np.char.replace(a, 'a', 'A', 1) # 只替换一次
# ## 1个中心化的方法
# ### np.char.center()
# 将每一个字符串放中间,其余用特定的符号补齐
# In[34]:
a = np.array(['a', 'b', 'c', 'python'])
a
# In[35]:
np.char.center(a, 100, '*')
# In[36]:
np.char.center(a, 100) # 不指定符号就默认用空格补齐
# ## 2种字符串大小写转换
# ### np.char.lower(a)
# 将a中的每一个大写字符转化为小写
# In[43]:
a = np.array(['asASd', 'fSDAgh', 'jSADkl'])
a
# In[44]:
np.char.lower(a)
# ### np.char.upper(a)
# 将a中的每一个每一个小写字符转化为大写
# In[45]:
a = np.array(['asdaASDAS', 'asdaSADAASDads', 'asd'])
a
# In[46]:
np.char.upper(a)
# ## 1中去除字符串两端的方法
# In[54]:
a = np.array(['1232311', 'qweqwe1', 'qweq123'])
a
# In[49]:
np.char.strip(a, '1')
# In[50]:
a = np.array([' as\t', '\nasxa '])
a
# In[53]:
np.char.strip(a) # 第二个参数不填默认去除两端的空格 \t \n等特殊字符
# In[ ]:
# In[55]:
a = np.array(['1232311', 'qweqwe1', 'qweq123'])
a
# In[ ]:
# In[ ]:
# In[ ]: