str函数 2018/12/5
汇总52个str函数,本人经过全部测试,简单的容易理解的没写例程,你可根据简表进行测试;复杂难以理解的
都附加有例程,共有12个例程。简表注释内容根据测试结果编写,而不是按简单的翻译,有时是难以理解的。
1.函数表
No | 字符串处理 | 类似Python中str忽略Na;适用于Series / Index |
0 | 使用方式:s.str.cat() | 返回序列索引或其他 |
1 | capitalize() | 字符串转大写 |
2 | cat([others, sep, na_rep, join]) | 用分隔符连接字符串;返回str或原对象构架 |
3 | center(width[, fillchar]) | 用附加字符填充字符串的左侧和右侧 |
4 | contains(‘'is') | 判断字符串中是否包含子串 |
5 | count(pat[, flags]) | 计算字符串中子串出现次数 |
6 | decode(encoding[, errors]) | 字节解码 |
7 | encode(encoding[, errors]) | 字符串编码 |
8 | endswith(pat[, na]) | 测试字符串结尾是否是特定子串 true |
9 | extract(pat[, flags, expand]) | 从正则表达式pat中提取第一个匹配字符;结果为1个字符 |
10 | extractall(pat[, flags]) | 从正则表达式pat提取所有匹配的,返回组 |
11 | find(sub[, start, end]) | 查找子串首索引,子串包含在[start:end] |
12 | findall(pat[, flags]) | 查找所有符合正则表达式的字符,以数组形式返回 |
13 | get(i) | 从指定位置提取字符 |
14 | get_dummies([sep]) | 用sep拆分每个字符串,返回一个虚拟/指示变量框 |
15 | index(sub[, start, end]) | 子串最低索引,子串范围[start:end]; |
- | 任何一个系列中的元素中无子串引发异常 | |
16 | isalnum() | 检查所有字符是否为字母数字 |
17 | isalpha() | 检查是否都是字母 |
18 | isdecimal() | 检查是否都是十进制 |
19 | isdigit() | 检查是否都是数字 |
20 | islower() | 检查是否都是小写 |
21 | isnumeric() | 检查是否都是数字 |
22 | isspace() | 检查是否都是空格 |
23 | istitle() | 检查是否都是标题 |
24 | isupper() | 检查是否都是大写 |
25 | join(sep) | 用分隔符连接所有字符;同一级有非str返回Na |
26 | len() | 计算每个字符串的长度 |
27 | ljust(width[, fillchar]) | 使用附加字符填充字符串的右侧 |
28 | lower() | 字符串转小写 |
29 | lstrip([to_strip]) | 左侧删除空格(包括换行符)或其他str |
30 | match(pat[, case, flags, na, …]) | 确定每个字符串是否与正则表达式匹配。 |
31 | normalize(form) | 返回字符串的Unicode普通表单 |
32 | pad(width[, side, fillchar]) | 指定左或右填充字符补齐字符串 |
33 | partition([pat, expand]) | 分隔符拆分为3部分,分隔符左,分隔符,分隔符右 |
34 | repeat(repeats) | 重复每个元素指定的次数 |
35 | replace(a,b) | 将值a替换为值b。 |
36 | rfind(sub[, start, end]) | 右边查找子串索引,子串包含在[start:end] |
37 | rindex(sub[, start, end]) | 返回每个元素中子串的最高索引,子串范围[start:end] |
- | 任何一个查找不到则异常 | |
38 | rjust(width[, fillchar]) | 使用附加字符填充字符串的左侧 |
39 | rpartition([pat, expand]) | 右拆分成3部分含分隔符 |
40 | rsplit([pat, n, expand]) | 分隔符字符串右边拆分字符串 |
41 | rstrip([to_strip]) | 右侧删除空格(包括换行符) |
42 | slice([start, stop, step]) | 切片截取字符串 |
43 | slice_replace([start, stop, repl]) | 用另一个值替换字符串的位置切片;比较复杂看实例 |
44 | split(['', n, expand]) | 按分隔符或子串拆分字符串 |
45 | startswith('st') | 测试字符串开头是否匹配子串True |
46 | strip('') | 删除字符串左右空白(包括换行符)或删除其他左右字符串 |
47 | swapcase() | 变换字母大小写 |
48 | title() | 字符串转标题 |
49 | translate(table[, deletechars]) | 通过映射表映射字符串中的所有字符 |
50 | upper() | 字符串转大写 |
51 | wrap(width, **kwargs) | 长字符串换行,#结果插入换行符\n |
52 | zfill(width) | 用0填充字符串的左侧 |
2实例
text="this is string example!"
s=pd.Series(text.split())
# 0 this
# 1 is
# 2 string
# 3 example!
# dtype: object
# 实例1:index
s.str.index('s')#必须每个元素中都含有‘s',:否则异常
# 实例2:translate字符串映射表
intab='aeiou'
outtab='12345'
trantab=str.maketrans(intab,outtab)
# {97: 49, 101: 50, 105: 51, 111: 52, 117: 53}
s.str.translate(trantab)
# 0 th3s
# 1 3s
# 2 str3ng
# 3 2x1mpl2!
# dtype: object
# 实例3:
s.str.split('i')#拆分
# 0 [th, s]
# 1 [, s]
# 2 [str, ng]
# 3 [example!]
# dtype: object
# 实例4:抽取匹配的字符串出来,注意要加上括号,把你需要抽取的东西标注上
s.str.extract("([d-z])")#提取第一个匹配字符
# 0
# 0 t
# 1 i
# 2 s
# 3 e
# 实例5:
s.str.extractall("([d-z])")#提取所有匹配字符
# 0
# match
# 0 0 t
# 1 h
# 2 i
# 3 s
# 1 0 i
# 1 s
# 2 0 s
# 1 t
# 2 r
# 3 i
# 4 n
# 5 g
# 3 0 e
# 1 x
# 2 m
# 3 p
# 4 l
# 5 e
# 实例6:unicodedata.normalize(form,unistr )
# 返回Unicode字符串unistr的普通表单表单。
# 表单的有效值为 “NFC”,“NFKC”,“NFD”和“NFKD”。
# 正规形式D(NFD)也称为规范分解,并将每个字符转换为其分解形式。
# 普通形式C(NFC)首先应用规范分解,然后再次组合预组合字符。
# 普通形式KD(NFKD)将应用兼容性分解,即将所有兼容性字符替换为其等效字符。
# 正常形式KC(NFKC)首先应用兼容性分解,然后是规范组合物。
import unicodedata
unicodedata.normalize('NFD', '\u00C7').encode('utf-8')# 'Ç'
unicodedata.normalize('NFD', '\u0043') # 'C'
unicodedata.normalize('NFD', '\u0327') # '̧'
unicodedata.normalize('NFD', '\u0043\u0327') # 'Ç'
unicodedata.normalize('NFD', '\u00C7').encode('ascii','ignore')#b'C'
b1=unicodedata.normalize('NFD', '\u00C7').encode('ascii','ignore')
b1.decode()# 'C'
title = u"Klüft skräms inför på fédéral électoral große"
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
# 'Kluft skrams infor pa federal electoral groe'
# 实例7:
v=s.str.encode('utf-8')
# 0 b'this'
# 1 b'is'
# 2 b'string'
# 3 b'example!'
# dtype: object
v.str.decode('utf-8')
# 0 this
# 1 is
# 2 string
# 3 example!
# dtype: object
# 实例8:
s.str.findall("[a-z]")
# 0 [t, h, i, s]
# 1 [i, s]
# 2 [s, t, r, i, n, g]
# 3 [e, x, a, m, p, l, e]
# dtype: object
# 实例9:
s.str.match("[d-z]")
# 0 True
# 1 True
# 2 True
# 3 True
# dtype: bool
# 实例10:
s.str.join('-')
# 0 t-h-i-s
# 1 i-s
# 2 s-t-r-i-n-g
# 3 e-x-a-m-p-l-e-!
s1 = pd.Series([['Tom', 'Bob', 'Jim'],[1.1, 2.2, 3.3],['s1', np.nan, 's2'],
['s3', 4.5, 's4'], ['s5', ['s6', 's7'], 's8']])
# 0 [Tom, Bob, Jim]
# 1 [1.1, 2.2, 3.3]
# 2 [s1, nan, s2]
# 3 [s3, 4.5, s4]
# 4 [s5, [s6, s7], s8]
# dtype: object
s1.str.join('-')
# 0 Tom-Bob-Jim
# 1 NaN
# 2 NaN
# 3 NaN
# 4 NaN
#实例11:字符串连接
s = pd.Series(['a', 'b', np.nan, 'd'])
s.str.cat(sep=' ', na_rep='?') # 'a b ? d'
s.str.cat(['A', 'B', 'C', 'D'], sep=',')
# 0 a,A
# 1 b,B
# 2 NaN
# 3 d,D
# dtype: object
s.str.cat(['A', 'B', 'C', 'D'], sep=',', na_rep='-')
# 0 a,A
# 1 b,B
# 2 -,C
# 3 d,D
# dtype: object
t = pd.Series(['D', 'A', 'B', 'C'], index=[4, 1, 2, 3])
s.str.cat(t, join=None, na_rep='-')
# 0 aD
# 1 bA
# 2 -B
# 3 dC
s.str.cat(t, join='left', na_rep='-')
# 0 a-
# 1 bA
# 2 -B
# 3 dC
# dtype: object
s.str.cat(t, join='outer', na_rep='-')
# 0 a-
# 1 bA
# 2 -B
# 3 dC
# 4 -D
# dtype: object
s.str.cat(t, join='inner', na_rep='-')
# 1 bA
# 2 -B
# 3 dC
# dtype: object
s.str.cat(t, join='right', na_rep='-')
# 4 -D
# 1 bA
# 2 -B
# 3 dC
# dtype: object
#实例12:
s = pd.Series(['a', 'ab', 'abc', 'abdc', 'abcde'])
# 0 a
# 1 ab
# 2 abc
# 3 abdc
# 4 abcde
# dtype: object
# 指定“start”,意思是将“start”替换为“respont”,直到字符串的末尾
s.str.slice_replace(1, repl='X')
# 0 aX
# 1 aX
# 2 aX
# 3 aX
# 4 aX
# dtype: object
# 只指定‘top’,这意味着将字符串的开头替换为‘Stop’,其余的字符串将包括在内
s.str.slice_replace(stop=2, repl='X')
# 0 X
# 1 X
# 2 Xc
# 3 Xdc
# 4 Xcde
# dtype: object
# 指定‘start’和‘top’,这意味着从‘start’到‘top’的片段被替换为‘repl’。“开始”和“停止”之前或之后的所有内容都按原样包括在内。
s.str.slice_replace(start=1, stop=3, repl='X')
# 0 aX
# 1 aX
# 2 aX
# 3 aXc
# 4 aXde