字符串
1.字符串的创建
a = 'python'
b = "python"
c = '''pyhton'''
2.字符串的常用操作
2.1查询操作
方法 作用 index() 查找子窜substr第一次出现的位置,如果查找的字串不存在时,则抛出ValueError rindex() 查找字串substr最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError find() 查找子窜substr第一次出现的位置,如果查找的子窜不存在,则返回-1 rfind() 查找字串substr最后一次出现的位置,如果查找的字串不存在时,则返回-1
s = 'hello,hello'
print ( s. index( 'lo' ) )
print ( s. find( 'lo' ) )
print ( s. rindex( 'lo' ) )
print ( s. rfind( 'lo' ) )
print ( s. find( 'k' ) )
print ( s. rfind( 'k' ) )
2.2大小写转换操作
方法 作用 upper() 把字符串中所有字符都转换成大写字母 lower() 把字符串中所有字符都转换成小写字母 swapcase() 把字符串中所有大写字母都转换成小写字母,把所有小写字母都转换成大写字母 capitalize() 把第一个字符转换为大写,把其余字符转换为小写 title() 把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写
s = 'hello,python'
a = s. upper( )
print ( s. upper( ) , id ( s. upper( ) ) )
print ( s. lower( ) , id ( s. lower( ) ) )
print ( s, id ( s) )
s2 = 'hello,Python'
print ( s2. swapcase( ) )
print ( s2. capitalize( ) )
print ( s2. title( ) )
2.3 内容对其操作
方法 作用 center() 居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格;如果设置宽度小于实际宽度,则返回原字符串 ljust() 左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格;如果设置宽度小于实际宽度,则返回原字符串 rjust() 右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格;如果设置宽度小于实际宽度,则返回原字符串 zfill() 右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度;如果指定的宽度小于等于字符串的长度,则返回字符串本身
s = 'hello,Python'
print ( s. center( 20 , '*' ) )
print ( s. ljust( 20 , '*' ) )
print ( s. ljust( 10 ) )
print ( s. ljust( 20 ) )
print ( s. rjust( 20 , '*' ) )
print ( s. rjust( 20 ) )
print ( s. rjust( 10 ) )
print ( s. zfill( 20 ) )
print ( s. zfill( 10 ) )
print ( '-666' . zfill( 8 ) )
2.4劈分操作
方法 作用 split() 从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 通过参数sep指定劈分字符串时的劈分符 通过参数maxsplit指定劈分字符串的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分 rsplit() 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 通过参数sep指定劈分字符串时的劈分符 通过参数maxsplit指定劈分字符串的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分
s = 'hello world python'
lst = s. split( ) ;
print ( lst)
s1 = 'hello|world|python'
print ( s1. split( sep= '|' ) )
print ( s1. split( sep= '|' , maxsplit= 1 ) )
print ( s1. rsplit( '|' ) ) ;
print ( s1. rsplit( sep= '|' , maxsplit= 1 ) )
2.5判断操作
方法 作用 isidentifier() 判定指定的字符串是不是合法的标识符 isspace() 判断指定的字符串是否全部由空白字符串组成(回车、换行、水平制表符) isalpha() 判断指定的字符串是否全部由字母组成 isdecimal() 判断指定的字符串是否全部由十进制的数字组成 isnumeric() 判断指定的字符串是否全部由数字组成 isalnum() 判断指定的字符串是否全部由字母和数字组成
print ( 'hello,python' . isidentifier( ) )
print ( 'hello' . isidentifier( ) )
print ( '美羊羊' . isidentifier( ) )
print ( '美羊羊_123' . isidentifier( ) )
print ( '\n' . isspace( ) )
print ( '\t' . isspace( ) )
print ( 'abc' . isalpha( ) )
print ( '张三' . isalpha( ) )
print ( '张三1' . isalpha( ) )
print ( '123' . isdecimal( ) )
print ( '123四' . isdecimal( ) )
print ( 'Ⅱ Ⅱ' . isdecimal( ) )
print ( '123' . isnumeric( ) )
print ( '123四' . isnumeric( ) )
print ( 'ⅡⅡ' . isnumeric( ) )
print ( 'abc1' . isalnum( ) )
print ( '张三123' . isalnum( ) )
print ( 'abc!' . isalnum( ) )
2.6替换与合并操作
方法 作用 replace() 第一个参数指定被替换的子串,第2个参数指定替换字串的字符串,第3个参数指定替换次数 该方法返回替换后得到的字符串,替换前的字符串不发生变化 join() 将列表或元组中的字符串合并成一个字符串
s = 'hello,python'
print ( s. replace( 'python' , 'Java' ) )
s1 = 'hello,python,python,python'
print ( s1. replace( 'python' , 'Java' , 2 ) )
lst = [ 'hello' , 'Java' , 'python' ]
print ( '|' . join( lst) )
print ( '' . join( lst) )
t = ( 'hello' , 'Java' , 'python' )
print ( '' . join( t) )
print ( '*' . join( 'python' ) )
2.7比较操作
运算符:>,>=,<,<=,==,!= 比较规则: 首先比较两个字符串中的第一个字符,如果相等,则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串的所有后续字符不再被比较。比较原理: 两个字符进行比较时,比较的是齐ordinal value(原始值),调用内置函数ord()可以得到指定字符的ordinal value。与内置函数ord()对应的是内置函数chr(),调用内置函数chr()时指定ordinal value可以得到其对应的字符。
print ( 'apple' > 'app' )
print ( 'apple' > 'banana' )
print ( ord ( 'a' ) , ord ( 'b' ) )
print ( ord ( '王' ) )
print ( chr ( 97 ) , chr ( 98 ) )
print ( chr ( 29579 ) )
'''== 与 is 的区别
== 比较的是value
is 比较的是id是否相等'''
a = b = 'python'
c = 'python'
print ( a == b)
print ( b == c)
print ( a is b)
print ( a is c)
2.8切片操作
s [start : end : step] 第一个元素表示切片的起始位置,第二个元素表示切片的结束位置(不包括该下标),step代表切片的步长 未写start,默认起始位置为第一个;未写end,默认起始位置为最后一个;未写step,默认步长为1
s = 'hello,python'
s1 = s[ : 5 ]
s2 = s[ 6 : ]
s3 = '!'
newstr = s1 + s3 + s2
print ( s, id ( s) )
print ( s1, id ( s1) )
print ( s2, id ( s2) )
print ( newstr, id ( newstr) )
print ( s[ 1 : 5 : 1 ] )
print ( s[ : : 2 ] )
print ( s[ : : - 1 ] )
print ( s[ - 6 : : 1 ] )
2.9格式化字符串操作
%作占位符 %s:字符串;%i或%d:整数;%f:浮点数(见方法1) {}作占位符 ‘{0}{1}.format()’(见方法2) {}作占位符 f-string(见方法3)
name = '张三'
age = 20
print ( '我叫%s,今年%d岁' % ( name, age) )
print ( '我叫{0},今年{1}岁' . format ( name, age) )
print ( f'我叫 { name} ,今年 { age} 岁' )
print ( '%10d' % 99 )
print ( '%.3f' % 3.1415926 )
print ( '%10.3f' % 3.1415926 )
print ( '{0:.3}' . format ( 3.1415926 ) )
print ( '{0:.3f}' . format ( 3.1415926 ) )
print ( '{0:10.3f}' . format ( 3.1415926 ) )
3.字符串的编码转换
编码:将字符串转换为二进制数据(bytes) 解码:将bytes类型的数据转换为字符串类型
s = "一日看尽长安花"
print ( s. encode( encoding= 'GBK' ) )
print ( s. encode( encoding= 'UTF-8' ) )
byte = s. encode( encoding= 'GBK' )
print ( byte. decode( encoding= 'GBK' ) )
byte = s. encode( encoding= 'UTF-8' )
print ( byte. decode( 'UTF-8' ) )