1、字符串的表示方式
(1)使用单引号表示。如:a='abcd'
(2)使用双引号表示。如:a="abcd"
(3)使用三个单(或双)引号表示。可以多行,通常表示注释或文档字符串。
2、字符串中使用转义字符
\\:反斜扛
\':单引号
\":双引号
\n:换行
\0yy:八进制数yy对应的字符。如"\040"表示空格。(前导字符是数字0不是字母O)
\xyy:十六进制数yy对应的字符。如"\x41"表示字符"A"。
\uyyyy:表示编码值为0xyyyy的Unicode字符。
3、禁止使用转义字符
字符串前加r(或R)表示禁止使用转义字符。这时,反斜扛不能为最后一个字符。
如:print(r"C:\tt.txt")
4、访问字符串中的值
(1)通过索引读取指定字符
字符串的索引有二种方式:
----从左到右索引为0,1,2,...
----从右到左索引为-1,-2,-3,...
如:a=s[-2]
(2)利用切片。切片格式:[起始:结束:步长]
---“起始”和“结束”均为索引值(可正可负)
---“步长”为前后索引的差,可正可负。
---截取的字符不包含结束索引对应的字符
假定a="abcde",则有:
---a[1:3]的值为"bc" #注意:缺省步长为1
---a[1:4:2]的值为"bd"
---a[2:]的值为"cde"
---a[:2]的值为"ab"
---a[:-2]的值为"abc"
---a[::-1]的值为"edcba"
***注意:不能改变截取部分的值。如:a[0]="k"会触发运行错误。
5、字符串操作符
--->,>=,<,<=,==,!=:按字符的ASCII码值比较。
---+:连接字符串。如:a="abc"+"def"
---*:重复。如:a="k"*3 #a="kkk"
---in:是否包含。如:"a" in "abc"返回值为True;"d" in "abc"返回值为False
---not in:是否不包含。如:"d" not in "abc"返回值为True
6、格式化字符串的方法主要有:
***使用符号“%”。
常用的格式符有:
---%d:整数占位。如:x="His age is %d."%a #a为整型变量
---%md:m表示最小宽度,不足补空格。如:s="%3d"%12,则s=" 12"
---%0md:0表示不足宽度时左侧补0。如:s="%03d"%12,则s="012"
---%.nd:n表示输出宽度,不足补0。如:s="%.3d"%12,则s="012"
---%m.nd:为以上综合。如:s="%5.3d"%12,则s=" 012"
---%*.*d:*表示m,n的值由字符串后面%()前两位数指定。如:
s="%*.*d"%(5,3,12),则s=" 012"
---%s:字符串占位。如:x="His name is %s."%nm #nm为字符串变量
---%ms:m为输出最小宽度。不足补空格。如:s="%3s"%"a",则s=" a"
---%.ns:n表示截取左侧的字符数。如:s="%.3s"%"abcd",则s="abc"
---%m.ns:以上综合。如:s="%4.3s"%"abcd",则s=" abc"
---%*.*s:类似%*.*d。如:s="%*.*s"%(4,3,"abcd"),则s=" abc"
---%f:浮点数占位。
---%mf:m为最小宽度。如:s="%8f"%3.14,则s="3.140000"
---%.nf:n指定小数点后四舍五入保留的小数点位数。默认为6。
如:s="%.2f"%3.156,则s="3.16"
---%m.nf:以上综合。如:s="%5.2f"%3.156,则s=" 3.16"
---%*.*f:类似%*.*d。如:s="%*.*f"%(5,2,3.156),则s=" 3.16"
---%o:输出整数的八进制表示。(使用字母o)。如:x="12对应的八进制数为%o"%12
---%mo,%.no,%m.no的作用参考%d的部分。
---%#o:表示输出八进制数时前面加上前缀0o。
---%x,%X:输出整数的十六进制表示。如:x="123对应的十六进制数为%X"%123
---%mx,%.nx,%m.nx的作用参考%d的部分。
---%#x:表示输出十六进制数时前面加上前缀0x。
---%e,%E:输出实数的科学计数法表示。如:x="234.12用科学计数法表示为%E"%234.12
---%c:输出一个字符。如:print("65对应的字符为%c"%65)
***使用format方法
---使用{}占位,format指定实际输出的数据。
如:x="{}+{}={}".format(a,b,a+b) #a=1,b=2则x="1+2=3"
---大括号中可指定数据序号0,1,2,...(序号为自然顺序时可省略,如上所示)
如:x="{0}{1}{0}.format(1,2) #x="121"
---大括号中可使用命名的关键字参数
如:x="His age is {age}".format(age=23) #x="His age is 23"
---可使用字典设置参数
如:a={'name':'XiaoMing','age':23}
x="His name is {name},age is {age}".format(**a) #**a表示字典解包
---通过列表设置参数
如:a=['XiaoMing',23]
x="His name is {0[0]},age is {0[1]}".format(a)
#这里只有一个参数a。0[0]、0[1]分别表示第一个参数的第1、2个元素
---可指定格式限制符。
格式为:字段:[[填充]对齐方式][正负号][#][宽度][分组选项][.精度][类型码]
---填充:为一个字符,默认为空格。如:s="{:03d}.format(12) #s="012"
---对齐方式:^、<、>分别表示居中、左对齐、右对齐(默认:数右对齐,字符左对齐)
---对齐方式为“=”表示:在正负号和数字之间填充,仅对数字类型有效。
---正负号:仅对数字类型生效。取值有三种:
---正号(+):正数前面添加正号,负数前面添加负号
---负号(-) 仅在负数前面添加负号(默认行为)
---空格:正数前面需要添加一个空格
---#:给二进制数、八进制数、十六进制数分别加上前缀0b、0o、0x(或0X)
---宽度:指定最小宽度。数字前有0时表示用0填充。
---分组选项:取值为","或"_"。对数字以千为单位进行分隔的分隔符。
---精度:小数点后要保留的位数。非数字类型为最大宽度。整数类型不能指定。
---类型码:可指定为:
---"s":字符串类型。不指定类型,同"s"类型
---"b","d","o","x"(或"X"):二进制、十进制、八进制、十六进制整数
---"e"("E")、"f"("F")、"g"("G"):浮点类型
---"%":百分比格式,数字自动乘上100后按f格式排版,并加%后缀
---如果花括号是字符的一部分,需要使用花括号转义。如:s="{{{}}}".format("a")) #s="{a}"
***使用f-字符串
---格式:{content:format}
---content是替换并填入字符串的内容,可以是变量、表达式或函数等
---format是格式描述符。包括:
---对齐方式:<、>、^分别表示左、右和居中对齐。
---数字符号:+(数字前加+)、-(正数前不加+)、空格(正数前加空格)
---数字显示方式:#。参考format部分。
---宽度与精度:m.n。参考format部分。
---千位分隔符:","或"_"。
---类型码:同format部分。
---使用示例:
a,b="ZhangSha",23
x=f"His name is {a},and age is {b}" #x='His name is ZhangSha,and age is 23'
a=23.156
x=f"{a:.2f}" #x=23.16
a=23
x=f"{a:b}" #x=10111 (b表示二进制)
a="abcdefg"
x=f"{a:4.6}" #x="abcdef" (4表示最小宽度;6表示截取字符数)
7、字符串为str对象,其内建函数有:
---capitalize( ):字符串首字符大写
---center(width):字符串居中,并使用空格填充至长度width
---count(str,beg,end):返回str出现的次数,beg、end指定范围
---decode(encoding,errors):以encoding编码格式解码。出错报ValueError异常, 除非errors指定为'ignore'或'replace'
---encode(encoding,errors):以encoding编码格式编码。出错报异常,除非errors指定为'ignore'或'replace'
---endswith(obj,beg,end):是否以obj结束。beg、 end指定范围
---expandtabs(tabsize):把字符串中的tab符号转为空格,tab符号默认空格数是8
---find(str,beg,end):检测是否包含str。beg、end指定范围
---format( ):格式化字符串
---index(str,beg,end):返回str首次出现的位置。不包含报异常
---isalnum( ):如果所有字符都是字母或数字则返回True,否则返回False
---isalpha( ):如果所有字符都是字母则返回True,否则返回False
---isdecimal( ):如果只包含Unicode数字和全角数字则返回True,否则返回False
---isdigit( ):如果只包含byte数字、Unicode数字和全角数字则返回True,否则返回False
---isnumeric( ):如果只包含Unicode数字、全角数字、罗马数字、汉字数字,则返回True,否则返回False
---islower( ):如果所有字符都是小写,则返回True,否则返回False
---isspace( ):如果只包含空格,则返回True,否则返回False
---istitle( ):如果是标题化的则返回True,否则返回False
---isupper( ):如果所有字符都是大写,则返回True,否则返回False
---join(seq):以原字符作连接符,将序列seq中所有元素(字符串)合并为一个新的字符串
---ljust(width):左对齐,并使用空格填充至长度width
---lower( ):转换所有大写字符为小写
---lstrip( ):截掉左边空格
---maketrans(x,y,z):创建字符映射转换表
---只一个参数x,x必须字典
---有参数x,y时,x,y必须是长度相等的字符串
---z必须是字符串
---返回值为字典
---参考translate函数
---partition(str):从str出现的第一个位置起,把字符串分成3元素元组
---replace(str1,str2,num):把str1替换成str2,num指定替换次数
---rfind(str,beg,end):类似find(),从右边开始查找
---rindex(str,beg,end):类似index(),从右边开始查找
---rjust(width):右对齐,并使用空格填充至长度width
---rpartition(str):类似partition(),从右边开始查找
---rstrip( ):删除末尾空格
---split(str,num):以str为分隔符切片为列表。num指定切片次数
---splitlines([keepends]):按照行分隔为列表。keepends为True,则保留换行符
---startswith(obj,beg,end):是否是以obj开头。beg、end指定范围
---strip( ):删除左右空格
---swapcase( ):大小写转换
---title( ):标题化:所有单词都是以大写开始,其余字母均为小写
---translate(table):根据表转换字符。如:
a="".maketrans("ab","89","def") #生成映射表
b="alive bound find".translate(a) #b="8liv 9oun in"
#a的作用:将"a"替换为"8","b"替换为"9","d","e","f"删除
---upper( ):小写字母转大写
---zfill(width):返回长度为width的字符串,原字符串右对齐,前面填充

