字符串处理


9

9.1 简介

在前面的章节里我们介绍了常用的数据类型,其中字符串并没有单独拎出来讲,那么接下来我们将重点讲下它。字符串一般是通过引号('或")包裹起来的,因为它有丰富的函数而且经常使用,所以我要 详细认识下。

 

字符串的基本操作这里不再细述,详见基础概念里的字符串部分。这里讲些字符串里的处理方法。

9.2 转义符

字符串里有些特殊字符,需要转义才能还原其本来的意义。如下表列举了常见的转义符:

 

转义字符

含义

备注

\(在行尾时)

续行符

\

... print('hello')

执行结果:

hello

\\

反斜杠符号

print('\\')

执行结果:

\

\'

单引号

print('his\'name is Tom!')

执行结果:

his'name is Tom!

\"

双引号

print("his\"name is Tom!")

执行结果:

his"name is Tom!

\a

响铃

print('\a')

执行结果:

一个滴的声音。

\b

退格(Backspace)

print('这是个退格键\b退格')

执行结果:

这是个退格退格

\e

转义

import re

re.findall('\w','abcdefghijklmnopqrstuvwxyz')

执行结果:

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',

 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

\000

print(ascii("\000"))

'\x00'

print("\000")

执行结果:

 

注:这里输出个空。

 

\n

换行

print("这是个\n空行")

执行结果:

这是个

空行

\v

纵向制表符

 

\t

横向制表符

print("这是个\t制表符")

这是个  制表符

\r

回车

f = open("G:\\test.txt", "w")

num = f.write( " Python 是一个非常好的语言。\r趣味编程是个优质的团队" )

# 关闭打开的文件

f.close()

f = open("G:\\test.txt", "r")

print(f.read())

f.close()

执行结果:

Python 是一个非常好的语言。

趣味编程是个优质的团队

\f

换页

 

\oyy

八进制数,yy代表的字符

f = open("G:\\test.txt", "w")

num = f.write( " Python 是一个非常好的语言。\f趣味编程是个优质的\o12团队" )

print(num)

# 关闭打开的文件

f.close()

f = open("G:\\test.txt", "r")

print(f.read())

f.close()

执行结果:

Python 是一个非常好的语言。趣味编程是个优质的

团队

注:\x0a是时间制的10,所以是换行。

\xyy

十六进制数,yy代表的字符,例如:\x0a代表换行

同理上面的\o12替换成\x0a会达到同样的目的。

:\x0a是时间制的10,所以是换行。

 

 

9.3 字符串运算符

字符串可以通过一些运算符号实现对字符串的拼接、组装等操作。如下我们通过一个表格来了解下:

操作符

描述

代码示例

+

字符串连接

a= 'hello'

b='xiaodao'

a+b

执行结果:

helloxiaodao

*

重复输出字符串

a= 'Hello'

a*2

执行结果

HelloHello

[]

通过索引获取字符串中字符,这里下表从0开始。

a= 'hello'

a[1]

执行结果: 

e

[ : ]

截取字符串中的一部分,这里下表遵循左闭又开原则即右边的下表取不到。

a= 'hello'

a[1:4]

执行结果: 

ell

in

如果字符串中包含给定的字符返回 True,反之为False

a='hello'

'h' in a

执行结果:

True

not in

如果字符串中不包含给定的字符返回 True,反之为False

a='hello'

'm' not in a

执行结果:

True

r/R

输出原始字符串,这里使用了该符号后即便字符串里有特殊字符仍不会转义。保留原来的样子。

print(r'\n')

执行结果:\n

print(r'\\n')

执行结果:\\n

print('\\n')

执行结果:\n

print('\n')

执行结果:

 

%

格式字符串

print ("我叫 %s 今年 %d 岁!" % ('小明', 10.5))

执行结果

我叫 小明 今年 10 岁!

操作符

描述

实例

 

9.4 字符串格式输出

字符串可以按照指定的格式输出,比如

符   号

描述

示例

%c

格式化字符及其ASCII码值

print ("我叫 %c" % ('三'))

执行结果:

我叫 三

%s

格式化字符串

print ("我叫 %s" % ('小三,我是%s方式输出的!'))

执行结果:

我叫 小三,我是%s方式输出的!

%d

格式化整数

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

执行结果:

我叫 小明 今年 10 岁!

%u

格式化无符号整型

print ("我叫 %s 今年 %u 岁!" % ('小明', 10.00))

执行结果:

我叫 小明 今年 10 岁!

%o

格式化无符号八进制数

print ("我叫 %s 今年是八进制的 %o 岁!" % ('小明', 10))

执行结果:

我叫 小明 今年是八进制的 12 岁!

%x

格式化无符号十六进制数

print ("我叫 %s 今年是八进制的 %x 岁!" % ('小明', 10))

执行结果:

我叫 小明 今年是八进制的  a岁!

%X

格式化无符号十六进制数,是大写方式。

print ("我叫 %s 今年是八进制的 %X 岁!" % ('小明', 10))

执行结果:

我叫 小明 今年是八进制的  A岁!

%f

格式化浮点数字,可指定小数点后的精度

print ("我叫 %s 今年是浮点表示的 %f 岁!" % ('小明', 10.5))

执行结果:

我叫 小明 今年是浮点表示的 10.500000 岁!

%e

用科学计数法格式化浮点数

print ("我叫 %s 今年是科学计算法表示的 %e 岁!" % ('小明', 1e1))

执行结果:

我叫 小明 今年是科学计算法表示的 1.000000e+01 岁!

%E

作用同%e,用科学计数法格式化浮点数,是大写方式。

print ("我叫 %s 今年是科学计算法表示的 %e 岁!" % ('小明', 1E1))

执行结果:

我叫 小明 今年是科学计算法表示的 1.000000E+01 岁!

%g

%f和%e的简写

print ("我叫 %s 今年是科学计算法表示的 %g 岁!" % ('小明', 1e1))

执行结果:

我叫 小明 今年是科学计算法表示的 10 岁!

%G

%f 和 %E 的简写

print ("我叫 %s 今年是科学计算法表示的 %G 岁!" % ('小明', 1e1))

执行结果:

我叫 小明 今年是科学计算法表示的 10 岁!    

 

9.5字符串内嵌函数

Python中内嵌了许多常用的函数,我们只要熟悉它们的功能即可轻松完成许多字符串处理工作。以下我们通过表格来认识下这些常用的函数:

 

函数名

描述

示例

capitalize

capitalize()

功能描述:

将字符串的首字符转为大写

mystr='hi man!'

print(mystr.capitalize())

执行结果

Hi man!

center

center(width, fillchar)

功能说明:
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

参数说明:

Ø  width:字符串的总宽度。

Ø  fillchar:填充字符。


str = "xiao dao bian cheng....wow!!!";

print ("str.center(36, 'a') : ", str.center(36,'a'))
返回结果:

str.center(36, 'a') :  aaaxiao dao bian cheng....wow!!!aaaa

注:这里以开头和结尾的两个a包围,因为str本身长度为32.

count

count(sub, start= 0,end=len(string))
功能描述:

返回 sub 在 string 里面出现的次数,如果 start 或者 end 指定则返回指定范围内 sub 出现的次数

参数说明:

Ø  sub:搜索的子字符串

Ø  start:字符串开始搜索的位置。默认为第一个字符,其索引值为0。

Ø  end:字符串中结束搜索的位置。默认为字符串的最后一个位置。

mystr='xiaodaobiancheng'

print("第3个位置后a出现的次数",mystr.count('e',2,len(mystr)))

print("第3个位置后a出现的次数",mystr.count('a',2,len(mystr)))

print("第3个位置后a出现的次数",mystr.count('a',3,len(mystr)))

执行结果:

第3个位置后a出现的次数 1

第3个位置后a出现的次数 3

第3个位置后a出现的次数 2

encode

encode(encoding='UTF-8',errors='strict')

功能描述:
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'


参数说明:

Ø  encoding:要使用的编码,如: UTF-8。

Ø  errors :设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

mystr = "趣味编程";

str_utf8 = mystr.encode("UTF-8")

str_gbk = mystr.encode("GBK")   

print("mystr的内容是:"+mystr)

print("UTF-8编码mystr:", str_utf8)

print("GBK编码mystr:", str_gbk)   

print("UTF-8解码:",str_utf8.decode('UTF-8','strict'))

print("GBK解码:", str_gbk.decode('GBK','strict'))

执行结果:

mystr的内容是:趣味编程   

UTF-8编码mystr: b'\xe5\xb0\x8f\xe9\x81\x93\xe7\xbc\x96\xe7\xa8\x8b'

GBK编码mystr: b'\xd0\xa1\xb5\xc0\xb1\xe0\xb3\xcc'

UTF-8 解码: 趣味编程

GBK 解码: 趣味编程

注:以上是每个print执行的结果的罗列,每个print之后都会有相应结果。

decode

decode(encoding="utf-8", errors="strict")

功能说明:
decode() 方法以指定的编码格式解码字符串。默认编码为字符串编码。

参数说明:

Ø  encoding:要使用的编码,如”UTF-8″。

Ø  errors :设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

mystr = "趣味编程";

str_utf8 = mystr.encode("UTF-8")

str_gbk = mystr.encode("GBK")   

print("mystr的内容是:"+mystr)

print("UTF-8编码mystr:", str_utf8)

print("GBK编码mystr:", str_gbk)   

print("UTF-8解码:",str_utf8.decode('UTF-8','strict'))

print("GBK解码:", str_gbk.decode('GBK','strict'))

执行结果:

mystr的内容是:趣味编程   

UTF-8编码mystr: b'\xe5\xb0\x8f\xe9\x81\x93\xe7\xbc\x96\xe7\xa8\x8b'

GBK编码mystr: b'\xd0\xa1\xb5\xc0\xb1\xe0\xb3\xcc'

UTF-8 解码: 趣味编程

GBK 解码: 趣味编程

注:以上是每个print执行的结果的罗列,每个print之后都会有相应结果。

startswith

startswith(str, beg=0,end=len(string))

功能说明:
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

参数说明:

Ø  str : 检测的字符串。

Ø  beg:选参数用于设置字符串检测的起始位置。

Ø  end:可选参数用于设置字符串检测的结束位置。


mystr='xiaodaobianchengxngxng'

suffix='x'

print ("'"+mystr+"'"+"是以x开头?"+str(mystr.startswith(suffix)))

print("'"+mystr+"'"+"的长度是:"+str(len(mystr)))

print ("'"+mystr+"'"+"从第17到19位置时以x开头?"+str(mystr.startswith(suffix,17,19)))

 

执行结果:

'xiaodaobianchengxngxng'是以x开头?True

'xiaodaobianchengxngxng'的长度是:22

'xiaodaobianchengxngxng'从第17到19位置时以x开头?False

endswith

endswith(suffix,start=0,end=len(string))

功能说明:

判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数”start”与”end”为检索字符串的开始与结束位置。

参数说明:

Ø  suffix: 该参数可以是一个字符串或者是一个元素。

Ø  start:字符串中的开始位置。

Ø  end:字符中结束位置。

 

mystr='xiaodaobianchengxngxng'

suffix='ng'

print

print(len(mystr))

print (mystr.endswith(suffix, 0, 19))

 

执行结果:

True

22

True

expandtabs

expandtabs(tabsize=8)

功能说明:
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。

参数说明:

Ø  tabsize:指定转换字符串中的 tab 符号('\t ')转为空格的字符数。


mystr='xiaodaobian\tchengxngxng'

print ("替换 \\t符号: " +  mystr.expandtabs())

print ("使用16个空格替换 \\t 符号: " +  mystr.expandtabs(16))

执行结果:

替换 \t 符号: xiaodaobian     chengxngxng

使用16个空格替换 \t 符号: xiaodaobian     chengxngxng

find

​find(str, beg=0 end=len(string))​

功能说明:
检测 str 是否包含在字符串中 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

参数说明:

Ø  str :定检索的字符串

Ø  beg :开始索引,默认为0。

Ø  end :结束索引,默认为字符串的长度。


mystr='xiaodaobiantchengxngxng'

str2='ng'

print ("'ng'所在索引序号为:"+str(mystr.find(str2)))

print ("'ng'所在索引序号为:"+str(mystr.find(str2,17)))

print ("'ng'所在索引序号为:"+str(mystr.find(str2,20)))

print ("'ng'所在索引序号为:"+str(mystr.find(str2,30)))


执行结果:

'ng'所在索引序号为:15

'ng'所在索引序号为:18

'ng'所在索引序号为:21

'ng'所在索引序号为:-1

rfind

​rfind(str, beg=0,end=len(string))​

功能说明:
功能类似于 find()函数,不过是从右边开始查找。

mystr='xiaodaobiantchengxngxng'

str2='ng'

print

执行结果:

21

index

​index(str, beg=0, end=len(string))​

功能说明:

功能类似find()方法,只不过如果str不在字符串中会报一个异常.

参数说明:

Ø  str :定检索的字符串

Ø  beg :开始索引,默认为0。

Ø  end :结束索引,默认为字符串的长度。

 

mystr='xiaodaobiantchengxngxng'

str2='ng'

print ("'ng'所在索引序号为:"+str(mystr.index(str2)))

print ("'ng'所在索引序号为:"+str(mystr.index(str2,17)))

print ("'ng'所在索引序号为:"+str(mystr.index(str2,20)))

print ("'ng'所在索引序号为:"+str(mystr.index(str2,30)))

执行结果:

'ng'所在索引序号为:15

'ng'所在索引序号为:18

'ng'所在索引序号为:21

Traceback (most recent call last):

 

    print ("'ng'所在索引序号为:"+str(mystr.index(str2, 30)))

ValueError: substring not found

 

rindex

rindex( str, beg=0, end=len(string))

功能说明:
类似于 index(),不过是从右边开始.

mystr='xiaodaobiantchengxngxng'

str2='ng'

print

执行结果:

21

isalnum

isalnum()

功能说明:
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False

mystr='xiaodaobiantchengxngxng'

print("'"+mystr+"'"+"是不是个数字字母:"+str(mystr.isalnum()))

执行结果:

'xiaodaobiantchengxngxng'是不是个数字字母:True

isalpha

isalpha()

功能说明:
如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False

mystr='xiaodaobiantchengxngxng!'

print("'"+mystr+"'"+"是不是个数字字母:"+str(mystr.isalnum()))

print("'"+mystr+"'"+"是一个alpha:"+str(mystr.isalpha()))

执行结果:

'xiaodaobiantchengxngxng!'是不是个数字字母:False

注:这里最后一个字母是!号,所以返回为false。

isdigit

isdigit()

功能说明:
如果字符串只包含数字则返回 True 否则返回 False..

mystr='xiaodaobiantchengxngxng!'

digitstr='123'

print("'"+mystr+"'是数字:"+str(mystr.isdigit()))

print("'"+digitstr+"'是数字:"+str(digitstr.isdigit()))

执行结果:

'xiaodaobiantchengxngxng!'是数字:False

'123'是数字:True

isdecimal

isdecimal()

功能说明:
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

digitstr='123'

print("'"+digitstr+"'是数字:"+str(digitstr.isdecimal ()))

执行结果:

'123'是数字:True

isnumeric

isnumeric()

功能说明:
如果字符串中只包含数字字符,则返回 True,否则返回 False

mystr = "xiaodao2017"

print ("'"+mystr+"'"+"是不是纯数字:"+str(mystr.isnumeric()))

mystr = "23443434"

print ("'"+mystr+"'"+"是不是纯数字:"+str(mystr.isnumeric()))

执行结果:

'xiaodao2017'是不是纯数字:False

'23443434'是不是纯数字:True

isspace

isspace()

功能说明:
如果字符串中只包含空格,则返回 True,否则返回 False.

mystr = "  "

print ("'"+mystr+"'"+"是不是纯数字:"+str(mystr.isspace()))

mystr = "xiao  dao biancheng"

print ("'"+mystr+"'"+"是不是纯数字:"+str(mystr.isspace()))

执行结果

'  '是不是纯数字:True

'xiao  dao biancheng'是不是纯数字:False

istitle

istitle()

功能说明:

方法检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。
是则返回True反之返回为False。

mystr = "This is a string xiaodao"

print ("'"+mystr+"'"+"是不是每个单词首字符大写:"+str(mystr.istitle()))

mystr = "This Is A String Xiaodao"

print ("'"+mystr+"'"+"是不是每个单词首字符大写:"+str(mystr.istitle()))


执行结果:

'This is a string xiaodao'是不是每个单词首字符大写:False

'This Is A String Xiaodao'是不是每个单词首字符大写:True

 

title

title()

功能说明:
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

mystr = "This is a string xiaodao"

print ("'"+mystr+"'"+"里的每个首字符被大写:"+str(mystr.title()))

 

执行结果:

'This is a string xiaodao'里的每个首字符被大写:This Is A String Xiaodao

isupper

isupper()

功能说明:
如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是大写,则返回 True,否则返回 False

mystr = "xiaodao"

print ("'"+mystr+"'"+"里的每个首字符被大写:"+str(mystr.isupper()))

执行结果:

'xiaodao'里的每个首字符被大写:False

islower

islower()

功能说明:
如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是小写,则返回 True,否则返回 False

mystr = "xiaodao"

print ("'"+mystr+"'"+"里的每个首字符被大写:"+str(mystr.islower()))

执行结果:

xiaodao'里的每个首字符被大写:True

upper

upper()

功能说明:

将字符串中里每个字符转成大写。

mystr = "xiaodao"

print ("'"+mystr+"'"+"里的每个首字符被大写:"+str(mystr.upper()))

执行结果:

'xiaodao'里的每个首字符被大写:XIAODAO

lower

lower()

功能说明:

将字符串中里每个字符转成小写。

mystr = "XIAODAO"

print ("'"+mystr+"'"+"里的每个首字符被大写:"+str(mystr.lower()))

执行结果:

'XIAODAO'里的每个首字符被大写:xiaodao

 

swapcase

swapcase()

功能说明:
将字符串中大写转换为小写,小写转换为大写

mystr='xiaodaobiancheng'

print('大小写转换:'+mystr.swapcase())

print('大小写转换:'+mystr.swapcase().swapcase())

执行结果:

大小写转换:XIAODAOBIANCHENG

大小写转换:xiaodaobiancheng


len

len(string)

功能说明:
返回字符串长度。

参数说明:

Ø  字符串string

mystr = "XIAODAO"

print ("'"+mystr+"'"+"里的每个首字符被大写:"+str(len(mystr)))

执行结果:

'XIAODAO'里的每个首字符被大写:7

max

​max(str)​

功能说明:
返回字符串 str 中最大的字母。

mystr = "XIAODAO"

print ("'"+mystr+"'"+"里字符的最大值:"+str(max(mystr)))

print("10,20,5里的最大值:"+str(max(10,20,5)))

 

执行结果:

'XIAODAO'里的每个首字符被大写:X

10,20,5里的最小值:20


min

​min(str)​

功能说明:
返回字符串 str 中最小的字母。

mystr = "XIAODAO"

print ("'"+mystr+"'"+"字符串里的最小值:"+str(min(mystr)))

print("10,20,5里的最小值:"+str(min(10,20,5)))

 

执行结果:

'XIAODAO'里的每个首字符被大写:A

10,20,5里的最小值:5

join

join(seq)

功能说明:
以指定字符串作为分隔符,将 序列里的所有的元素合并为一个新的字符串

参数说明:

Ø  seq: 要连接的元素序列。

 

mystr = "_";

seq = ("xiao", "dao", "bian", "cheng"); # 字符串序列

print( mystr.join( seq ));

执行结果:

xiao_dao_bian_cheng

ljust

ljust(width[, fillchar])

功能说明:
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。

参数说明:

Ø  width:指定字符串长度。

Ø  fillchar : 填充字符,默认为空格。

 

mystr='xiaodaobiancheng'

print(mystr.ljust(20,'*'));

执行结果:

xiaodaobiancheng****

rjust

rjust(width[, fillchar])

功能说明:
返回一个原字符串右对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。

参数说明:

Ø  width:指定字符串长度。

fillchar : 填充字符,默认为空格

mystr='xiaodaobiancheng'

print(mystr.rjust(20,'*'));

 

执行结果:

****xiaodaobiancheng

lstrip

lstrip()

功能说明:
截掉字符串左边的空格

mystr='  xiaodao biancheng'

print('去除左侧空格:'+mystr.lstrip())

执行结果:

去除左侧空格:xiaodao biancheng

rstrip

rstrip()

功能说明:

截掉字符串尾部的空格

 

mystr='  xiaodao biancheng  '

print('尾部去除空格:'+mystr.rstrip())

执行结果:

尾部去除空格:  xiaodao biancheng

strip

strip()

功能说明:

截掉字符串头部和尾部的空格

 

mystr='  xiaodaobiantchengxngxng  '

print

执行结果:

xiaodaobiantchengxngxng

zfill

zfill (width)

功能说明:
返回长度为 width 的字符串,原字符串右对齐,前面填充0

参数说明:

Ø  width: 指定字符串的长度。原字符串右对齐,前面填充0。


mystr = "xiao dao bian cheng!!!"

print(mystr.zfill(30))

执行结果:

00000000xiao dao bian cheng!!!

replace

replace(old, new [, max])

功能说明:
把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。

参数说明:

Ø  old :将被替换的子字符串。

Ø  new :新字符串,用于替换old子字符串。

Ø  max :可选字符串, 替换不超过 max 次


mystr='  xiaodao biancheng'

print("替换'ao'为'what'"+mystr.replace('ao','what'))

print("替换'ao'为'what'2次"+mystr.replace('ao','what',2))

 

执行结果:

替换'ao'为'what'  xiwhatdwhat biancheng

替换'ao'为'what'2次  xiwhatdwhat biancheng

split

​split(str="", num=string.count(str))​

num=string.count(str))

功能说明:

以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串

参数说明:

Ø  str:分隔符,默认为空格。

Ø  num : 分割次数。


mystr = "xiao dao bian cheng!!!"

mystr2 = "xiaao daao baaian cheng!!!"

print

print (mystr.split('a',1))

print (mystr2.split('a',2))

print (mystr.split('n'))

 

执行结果:

['xiao', 'dao', 'bian', 'cheng!!!']

['xi', 'o dao bian cheng!!!']

['xi', '', 'o daao baaian cheng!!!']

['xiao dao bia', ' che', 'g!!!']

splitlines

splitlines()

功能说明:
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表。

mystr = "xiao\ndao\nbian\ncheng!!!"

print

执行结果:

['xiao', 'dao', 'bian', 'cheng!!!']

maketrans

maketrans(intab, outtab)

功能说明:
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

参数说明:

Ø  intab — 字符串中要替代的字符组成的字符串。

Ø  outtab — 相应的映射字符的字符串。


intab = "aeiou"

outtab = "12345"

trantab = str.maketrans(intab, outtab)

mystr = "xiao dao bian cheng!!!"

print

执行结果:

x314 d14 b31n ch2ng!!!

translate

translate(table, deletechars="")

功能说明:
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中

参数说明:

Ø  table:翻译表,翻译表是通过maketrans方法转换而来。

Ø  deletechars:字符串中要过滤的字符列表


intab = "aeiou"

outtab = "12345"

trantab = str.maketrans(intab, outtab)

mystr = "xiao dao bian cheng!!!"

print

执行结果:

x314 d14 b31n ch2ng!!!

partition

partition(str)

功能说明:

该方法用来根据指定的分隔符将字符串进行分割。

如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。

参数说明:

Ø  str:指定的分隔符。

mystr='xiao dao bian cheng'

print(mystr.partition(' '))

执行结果:

('xiao', ' ', 'dao bian cheng')

rpartition

rpartition()

功能说明:

功能类似partition,只是从右边开始查找。

参数说明:

Ø  str:指定的分隔符。

mystr='xiao dao bian cheng'

print(mystr.rpartition(' '))

执行结果:

('xiao dao bian', ' ', 'cheng')

 

9.6 总结

通过本章的学习我们了解了字符串里常用的处理方法,为我们后期的程序开发奠定了坚实的基础。接下来我们学习下python里的输入输出。