第十讲:字符串
字符串
字符串的作用:
- 输入端:数据驱动自动化,不管是存放在excel或数据库,以字符串形式读取出来,对读取的字符串需要做处理,比如对字符串作切割不同参数的取值
- 输出端:自动化作断言,需要对字符串的内容做文本校验,如UI自动化或接口自动化,比如接口自动化需要对返回值作校验,对UI自动化的text作校验
一、访问获得字符串:通过索引、切片,遍历方式获取
str='hello world' print (str[0]) print (str[:6]+'wenky')
运行结果:
h
hello wenky
#遍历字符串的每个字符 for i in str: print (i) 运行结果: h e l l o w o r l d
二、换行和转义字符:
示例:请打印出以下变量的值:
n = 123
f = 456.789
s1 = 'Hello, world'
s2 = 'Hello, \'Adam\''
s3 = r'Hello, "Bart"'
s4 = r'''Hello,
Lisa!'''
n ='n= 123' f='f= 456.789' s1 ='s1= \'Hello, world\'\'' s2 = 's2= \'Hello, \\\'Adam\\\'\'' s3 = 's3= r\'Hello, \"Bart\"\'' s4 = 's4= r\'\'\'Hello,\n Lisa!\'\'\'' print('\n',n,'\n',f,'\n',s1,'\n',s2,'\n',s3,'\n',s4,'\n')
运行结果:
n= 123
f= 456.789
s1= 'Hello, world''
s2= 'Hello, \'Adam\''
s3= r'Hello, "Bart"'
s4= r'''Hello,
Lisa!'''
示例2:
print (r"\ \\ ' '' ''' \n \t \r") #不改变转义符 print ("\ \\ ' \'' ''' \n \t \r")
运行结果:
\ \\ ' '' ''' \n \t \r
\ ' '' '''
说明:含有 r 是自然或原始字符,不改变转移符 |,字符串是用 单引号 ‘ 或 双引号 “ 表示,如要表示自己,需用 \ 转义符转义
三、字符串运算符
示例:+、* 、 []取值 、[::]切片 、in 操作
b1='abc' b2='dfg' print (b1+b2) print (b1*2) print (b1[1]) print (b1[::2]) #取奇数字符 print (b2[1::2]) #取偶数字符 运行结果: abcdfg abcabc b ac f
四、字符串格式化:
说明:%d表示整数;%s表示字符串 ;%f 表示浮点数,如指定小数点位数,如指定小数点两位数则是 %.2f ;如果字符串里面有“%”,则用%%
来表示一个%。
示例:小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位:
a=72 b=85 r=(b-a)/b*100 #除法计算结果是浮点数 print ('%.1f%%'%r) 运行结果: 15.3%
五、字符串对齐:
%nd:默认右对齐,指定长度n
%-nd:左对齐,指定长度n
#%10d指定长度10,默认右对齐 print ("I am %10d years old."%19) #%-10d指定长度10,左对齐 print ("I am %-10d years old."%19)
运行结果:
I am 19 years old.
I am 19 years old.
示例2:显示学生的如下的信息:name、sex、age、school ,其中name按照15个字符长度显示,sex 10个字符长度,age 5个字符长度,school15个字符长度,并且都是左对齐,录入不少于5个学生的信息。
print ('%-15s%-10s%-5s%-20s'%('name','sex','age','shcool')) print ('%-15s%-10s%-5d%-15s'%('aaa','g',12,'school1')) print ('%-15s%-10s%-5d%-15s'%('bbb','b',32,'school2')) print ('%-15s%-10s%-5d%-15s'%('ccc','b',12,'school3')) print ('%-15s%-10s%-5d%-15s'%('ddd','g',32,'school4'))
运行结果:
name sex age shcool
aaa g 12 school1
bbb b 32 school2
ccc b 12 school3
ddd g 32 school4
左对齐函数:S.ljust(width,[fillchar]):输出width字符,S左对齐,不足部分用fillchar补充,默认为空
str='abc' print (str.ljust(10,'*')) #不足以*补充 print (str.ljust(3,'*')) #没空余位置,则没有填充字符 print (str.ljust(10)) #默认以空格填充
运行结果:
abc*******
abc
abc
右对齐函数:S.rjust(width,[filchar]):输出width字符,S左对齐,不足部分用fillchar补充,默认为空
str='abc' print (str.rjust(10,'*')) #不足以*补充 print (str.rjust(3,'*')) #没空余位置,则没有填充字符 print (str.rjust(10)) #默认以空格填充
运行结果:
*******abc
abc
abc
中间对齐函数:S.center(width, [fillchar]) :输出width字符,S中间对齐,不足部分用fillchar补充,默认为空
str='abc' print (str.center(10,'*')) #不足以*补充 print (str.center(3,'*')) #没空余位置,则没有填充字符 print (str.center(10)) #默认以空格填充
运行结果:
***abc****
abc
abc
zfill()右对齐,不够自动以0填充
str='123abc' print (str.zfill(10)) print (str.rjust(10,'0'))
运行结果:
0000123abc
0000123abc
六、清理不可见字符函数:strip()、lstrip()、rstrip():
1、S.strip()函数说明:
可以将字符串的左右空格 \t 等空白内容去除,该函数可以将字符串的左右两边的空格、\t 等空白内容或指定字符串去除,并返回处理后的结果,但原字符串并未被改变。
# 默认清理前后空白字符 s='boy boy boy' print (s.strip()) # *号不是最后位,所以清理不了 s1='***boy boy boy***\n' print (s.strip('*')) # 清理指定字符 s='hello boy boy boy' print (s.strip('hello '))
运行结果:
boy boy boy
boy boy boy***
boy boy boy
2、lstrip():将字符串的左边空格\t等空白内容去除
# 默认清理左边空白字符 s='boy boy boy' print (s.lstrip()) # 清理左边指定字符 s='hello boy boy boy' print (s.strip('hello ')) # *号不是最左边,所以清理不了 s1='\n***boy boy boy***\n' print (s1.lstrip('*'))
运行结果:
boy boy boy
3、rstrip():将字符串的右边空格\t等空白内容去除
# 默认清理左边空白字符 s='boy boy boy' print (s.rstrip()) # 清理右边指定字符 s1='hello boy boy boy' print (s1.rstrip('boy')) # *号不是最右边,所以清理不了 s2='\n***boy boy boy***\n' print (s2.rstrip('*'))
运行结果:
hello boy boy
七、字符串的大小写互换:ascii码值互换,char()
#大写转换小写:lower() >>> str='ABC' >>> print str.lower() abc #小写转换大写:upper() >>> str='abc' >>> print str.upper() ABC #大小写互换:swapcase() >>> str1='asBDs' >>> print str1.swapcase() ASbdS #首字母转换为大写:capitalize() >>> s2='i love python' >>> print s2.capitalize() I love python #每个字母的首字母大写:capwords()-是string模块的方法,效果同title() >>> import string >>> s4='study python' >>> print string.capwords(s4) Study Python >>> print s4.title() Study Python
八、字符串的搜索