字符串,与元组相同,是一个不可变的数据类型,但是字符串的内置方法有很多
字符串、列表、元组属于序列
>>> str1 = "liang love wuning"
>>> str1[2] #访问单个字符
'a'
>>> str1[:8] #访问字符串
'liang lo'
>>> str1[:5] + "li" + str1[5:] #由旧的字符串拼接而成的新字符串
'liangli love wuning'
>>> str1 #旧的字符串依然存在,只是没有变量指向它
'liang love wuning'
>>> str1 = str1[:5] + "li" + str1[5:]
>>> str1
'liangli love wuning'
- 字符串的方法及注释
【1】capitalize() ——把字符串的第一个字符改为大写
>>> str1 = "love"
>>> str1.capitalize() #返回一个新的字符串,原来的没有改变
'Love'
>>> str1
'love'
【2】casefold()——把整个字符串的所有字符改为小写
>>> str2 = "LOVE"
>>> str2.casefold() #返回一个新的字符串,原来的没有改变
'love'
>>> str2
'LOVE'
【3】center(width)——将字符串居中,并使用空格填充至长度 width 的新字符串>>> str2 = “LOVE”
>>> str2.center(50)
' LOVE '
【4】count(sub[, start[, end]])——返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
>>> str3 = "liang li wu ning"
>>> str3.count('li')
2
【5】encode(encoding=‘utf-8’, errors=‘strict’)——以 encoding 指定的编码格式对字符串进行编码。
【6】
endswith(sub[, start[, end]])——检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
startswith(prefix[, start[, end]])——检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
>>> str3 = "liang li wu ning"
>>> str3.endswith('li')
False
【7】expandtabs([tabsize=8])——把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
>>> str3 = "liang\tli\twu\tning"
>>> str3.expandtabs() #空格数为8是包括字符在内的
'liang li wu ning'
【8】
find(sub[, start[, end]])——检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
refind——类似于 find() 方法,不过是从右边开始查找。
>>> str3 = "liang li wu ning"
>>> str3.find('code')
-1
>>> str3.find('i')
1
【9】
index(sub[, start[, end]])——跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。——index和find的不同之处
rindex(sub[, start[, end]])——类似于 index() 方法,不过是从右边开始。
【10】isalnum()——如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。字母或者数字两者皆可以,其中一个也可以
【11】isalpha()——如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回False。——只能是字母
【12】isdecimal()——如果字符串只包含十进制数字则返回 True,否则返回 False。
【13】isdigit()——如果字符串只包含数字则返回 True,否则返回False。——只能是数字
【14】islower()——如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。——如果是中文,也返回False
【15】isnumeric()——如果字符串中只包含数字字符,则返回 True,否则返回 False。
【16】isspace()——如果字符串中只包含空格,则返回 True,否则返回 False。
【17】istitle()——如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
>>> str4 = "Liang Li"
>>> str4.istitle()
True
>>> str4 = "Liang LI"
>>> str4.istitle()
False
【18】isupper()——如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
【19】join(sub)——以字符串作为分隔符,插入到 sub 中所有的字符之间。
>>> str4 = "Liang LI"
>>> str4.join('1234')
'1Liang LI2Liang LI3Liang LI4'
【20】
ljust(width)——返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
rjust(width)——返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
>>> str5 = "to be or not to be"
>>> str5.ljust(50)
'to be or not to be
’
【21】lower()——转换字符串中所有大写字符为小写。
【22】
lstrip()——去掉字符串左边的所有空格
rstrip()——去掉字符串右边的所有空格
>>> str6 = " i love you"
>>> str6.lstrip()
'i love you'
【23】partition(sub)——找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 (‘原字符串’, ‘’, ‘’)
>>> str6 = "i love you"
>>> str6.partition("ov")
('i l', 'ov', 'e you')
【24】replace(old, new[, count])——把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
>>> str6 = "i love you"
>>> str6.replace("love","dou\'t love")
"i dou't love you"
【25】rfind(sub[, start[, end]])——类似于 find() 方法,不过是从右边开始查找。
【26】rindex(sub[, start[, end]])——类似于 index() 方法,不过是从右边开始。
【27】rjust(width)——返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
【28】rpartition(sub)——类似于 partition() 方法,不过是从右边开始查找。
【29】rstrip()——删除字符串末尾的空格。
【30】split(sep=None, maxsplit=-1)——不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
>>> str6 = "i love you"
>>> str6.split()
['i', 'love', 'you'] #分成三个元素的列表
>>> str6.split('o')
['i l', 've y', 'u'] #以o为分隔符,切片字符串
【31】splitlines(([keepends]))——在输出结果里是否去掉换行符\n,默认为 False,不包含换行符;如果为 True,则保留换行符。。
【32】startswith(prefix[, start[, end]])——检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
【33】strip([chars])——删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
>>> str7 = " ssssaaaaaassss "
>>> str7.strip()
'ssssaaaaaassss'
>>> str7 = str7.strip()
>>> str7
'ssssaaaaaassss'
>>> str7.strip('s') #可以指定删除的字符
'aaaaaa'
【34】swapcase()——翻转字符串中的大小写。
>>> str8 = "Liang Li and Wu Ning"
>>> str8.swapcase()
'lIANG lI AND wU nING'
【35】title()——返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
>>> str9= "liang li and wu ning"
>>> str9.title()
'Liang Li And Wu Ning'
【36】translate(table)——根据 table 的规则(可以由 str.maketrans(‘a’, ‘b’) 定制)转换字符串中的字符。
>>> str7
'ssssaaaaaassss'
>>> str7.translate(str.maketrans('a', 'b'))
'ssssbbbbbbssss'
>>> str.maketrans('a', 'b') #97和98分别是a和b的ASCII码
{97: 98}
【37】upper()——转换字符串中的所有小写字符为大写。
【38】zfill(width)——返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。
>>> str8 = "liang li and wu ning"
>>> str8.zfill(50)
'000000000000000000000000000000liang li and wu ning'
- 字符串格式化函数
replacement字段在字符串中用{}表示
.format()由关键字参数和位置参数组成
#位置参数
>>> "{0} love {1} {2}".format("i","you","very much")
#字段{0}、{1}、{2}分别用{}括起来表示字段; 通过位置参数将("i","you","very much")传递给format方法:通过format方法对这个字符串进行格式化处理
'i love you very much'
#关键字参数
>>> "{a} love {b} {c}".format(a = "i",b = "you",c = "very much")
'i love you very much'
位置参数可以放在关键字参数前,但是反过来就会报错
>>> "{0} love {b} {c}".format("i",b = "you",c = "very much")
'i love you very much'
如何输出{}——双层{}作用类似于\取消原字符的转义
>>> "{{0}}".format("不不不") #"不不不"不会被打印; 因为0被{}解释了,与"\\"类似
'{0}'
在替换域中,:表示格式化符号的开始
.1——表示保留一位小数,四舍五入
f——打印出定点数(定点数和浮点数差不多,都是打印小数)
>>> "{0:.1f}{1}".format(26.658,"GB")
'26.7GB'
.如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
‘’.format('Pi = ', 3.1415)
>>> '{0}{1:.2f}'.format('Pi = ',3.1415)
'Pi = 3.14'
- 字符串格式化符号及其意义
%c——格式化字符及其 ASCII 码
>>> '%c' % 100
'd'
>>> '%c %c %c' % (100,105,107) #如果有多个参数,要写成元组的形式;括号不写会报错
'd i k' #格式化字符串,就是按照'%c %c %c'的要求合并输出
%s——格式化字符串(用一个字符串去格式化另外一个字符串)
>>> '%s' % 'I love you'
'I love you'
%d——格式化整数
>>> '%d + %d = %d' % (4,5,4+5)
'4 + 5 = 9'
%o——格式化无符号八进制数
>>> '%o' % 124
'174'
%x——格式化无符号十六进制数
>>>'%x' % 124
'7c'
%X——格式化无符号十六进制数(大写)
>>> '%X' % 124
'7C'
%f——格式化浮点数字,可指定小数点后的精度(精确到六位小数)
>>> '%f' % 3.14159265
'3.141593'
%e——用科学计数法格式化浮点数
>>> '%e' % 26.789
'2.678900e+01'
%E——作用同 %e,用科学计数法格式化浮点数
>>> '%E' % 26.789
'2.678900E+01'
%g——根据值的大小决定使用 %f 或 %e
>>> '%g' % 26.789
'26.789'
%G——作用同 %g,根据值的大小决定使用 %f 或者 %E
>>> '%G' % 3.14159265
'3.14159'
十进制转二进制——使用bin()函数
>>> bin(10)
'0b1010'
- 格式化操作符辅助命令
符号 | 说明 |
---|---|
m.n | m 是显示的最小总宽度,n 是小数点后的位数 |
- | 用于左对齐 |
+ | 在正数前面显示加号(+) |
# | 在八进制数前面显示 ‘0o’,在十六进制数前面显示 ‘0x’ 或 ‘0X’ |
0 | 显示的数字前面填充 ‘0’ 取代空格 |
m.n——m 是显示的最小总宽度,n 是小数点后的位数
>>> '%5.1f' % 3.67
' 3.7'
>>> '%20e' % 3.14159265
' 3.141593e+00'
>>> '%10d' % 3.14159265
' 3'
— ———用于左对齐
>>> '%-10d' % 3.14159265
'3
+——在正数前面显示加号(+)
>>> '%+10d' % 3.14159265
' +3'
>>> '%+10d' % -3.14159265
' -3'
#——在八进制数前面显示 ‘0o’,在十六进制数前面显示 ‘0x’ 或 ‘0X’
>>> '%#o' % 12
'0o14'
>>> '%#x' % 124
'0x7c'
#后面默认都为十进制数
>>> '%#d' % 124
'124'
0 显示的数字前面填充 ‘0’ 取代空格
>>> '%010d' % 5
'0000000005'
>>> '%-010d' % 5
'5 '
5、Python 的转义字符及其含义
符号 | 说明 |
---|---|
\’ | 单引号 |
\" | 双引号 |
\a | 发出系统响铃声 |
\b | 退格符 |
\n | 换行符 |
\t | 横向制表符(TAB) |
\v | 纵向制表符 |
\r | 回车符 |
\f | 换页符 |
\o | 八进制数代表的字符 |
\x | 十六进制数代表的字符 |
\0 | 表示一个空字符 |
\\ | 反斜杠 |