1.字符串中使用引号
- 非成对出现的引号,用转义字符"\":
>>> str1='Where\'re you now?'
>>> print(str1)
Where're you now?
- 成对出现的引号:
1)单引号中可用双引号
>>> str2='"DJY"'
>>> print(str2)
"DJY"
2)双引号中可用单引号
>>> str3="'DJY'"
>>> print(str3)
'DJY'
3)三引号可保持字符串原来的格式(从转义字符中被解救的感觉)
>>> str4='''DJY
FXW'''
>>> print(str4)
DJY
FXW
>>> str5="""DJY
FXW"""
>>> print(str5)
DJY
FXW
- 如果想在字符串中既有成对单引号又有成对双引号:
>>> str61="'djy'"
>>> str62='"fxw"'
>>> print(str61+str62)
'djy'"fxw"
2.字符串中显示转义字符
- 如果想在字符串中显示少量转义字符"\":
>>> str1='DJY\\FXW'
>>> print(str1)
DJY\FXW
此种方法常用在:
发出系统响铃声 \a,
退格符 \b,
换行符 \n,
横向制表符(TAB) \t,
纵向制表符 \v,
回车符 \r,
换页符 \f,
八进制数代表的字符 \o,
十六进制数代表的字符 \x,
其它的字符以普通格式输出 \other
空字符 \0,
反斜杠 \。
- 如果想在字符串中显示大量转义字符"\":
>>> str2=r'C:\DJY\djy\d\j\y' #r是来自于原始字符串(raw strings)
>>> print(str2)
C:\DJY\djy\d\j\y
若还想以结尾,只需改为:
>>> str2=r'C:\DJY\djy\d\j\y\\'
>>> print(str2)
C:\DJY\djy\d\j\y\
3.字符串运算符
字符索引[]
>>> str1='python2048'
>>> str1[6]
‘2’
>>> str1[-1]
'8'
字符串分片[:]
>>> str1='python2048'
>>> str1[6:10]
'2048'
>>> str1[:6]
'python'
字符串连接+
>>> str1='python'
>>> str2='2048'
>>> str1+str2
'python2048'
字符串重复*
>>> str1='python2048'
>>> str1*3
'python2048python2048python2048'
4.字符串格式化
字符串格式化符号
- 格式化字符及其ASCII码:%c
>>> '%c %c %c'%(97,98,99)
'a b c'
- 格式化字符串:%s
>>> '%s'%'djy'
'djy'
- 格式化整数:%d
>>> '%d+%d=%d'%(1,2,1+2)
'1+2=3'
- 格式化无符号八进制、十六进制数(小写、大写):%o、%x、%X
>>> '%X'%(10)
'A'
- 格式化定点数,可设置小数点后的精度:%f
>>> '%f'%99.09584
'99.095840'
- 用科学计数法格式化定点数(小写、大写):%e、%E
>>> '%e'%99.09584
'9.909584e+01'
- 根据值的大小决定使用%f还是%e(%E):%g、%G
>>> '%G'%99.09584
'99.0958'
格式化操作符辅助指令
- 显示最小总宽度m,小数点后的位数n:m.n
>>> '%9.2f'%99.09584
' 99.10'
- 左对齐:-
>>> '%-20f'%2
'2.000000 '
- 在正数前面显示加号(+):+
>>> '%+f'%2
'+2.000000'
- 在八进制数前面显示零('0'),在十六进制数前面显示'0x'或'0X'
>>> '%#o'%10
'0o12'
- 显示的数字前面填充'0'取代空格:0
>>> '%020f'%10
'0000000000010.000000'
5.字符串的BIF
- 把字符串的第一个字符改成大写:capitalize()
>>> str1='python精英群'
>>> str1.capitalize()
'Python精英群'
- 把整个字符串的所有字符改为小写:casefold()
>>> str2='PYTHON2048'
>>> str2.casefold()
'python2048'
- 将字符串居中,并用空格填充至长度width形成新字符串:center(width)
>>> str3='python2048'
>>> str3.center(20)
' python2048 '
- 返回sub在字符串里出现的次数,start和end参数表示范围:count(sub[,start[,end]])
>>> str4='djydjydjy'
>>> str4.count('jy',2,9)
2
- 检查字符串是否以sub子字符串结束,如果是返回True,否则返回False:endswith(sub[,start[,end]])
>>> str5='djydjydjy'
>>> str5.endswith('jy',2,9)
True
- 把字符串中的tab符号(t)转换为空格,如不指定参数,默认空格数tabsize=8:expandtabs([tabsize=8])
>>> str6='djy\tpython\tfxw'
>>> str6.expandtabs()
'djy python fxw'
- 检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1:find(sub[,start[,end]])
>>> str7='djyfxw'
>>> str7.find('c')
-1
- 检测sub是否包含在字符串中,如果有则返回索引值,否则会出现Error:index(sub[,start[,end]])
>>> str8='djyfxw'
>>> str8.index('c') #发生Error
ValueError: substring not found
- 如果字符串中所有字符都为字母或数字,则返回True,否则返回False:isalnum()
>>> str9='djy&fxw'
>>> str9.isalnum()
False
- 如果字符串中字符都为字母,则返回True,否则返回False:isalpha()
>>> str10='djy&fxw'
>>> str10.isalpha()
False
- 如果字符串为Unicode数字、全角数字(双字节)则返回True,罗马数字、汉字数字返回Flase, byte数字(单字节)会出现Error:isdecimal()
>>> str11='2048'
>>> str11.isdecimal()
True
- 如果字符串为Unicode数字、byte数字(单字节)、全角数字(双字节)、罗马数字则返回True, 汉字数字返回Flase:isdigit()
>>> str12='2048'
>>> str12.isdigit()
True
- 如果字符串为Unicode数字、全角数字(双字节)、罗马数字、汉字数字则返回True,byte数字(单字节)会出现Error:isnumeric()
>>> str13='2048'
>>> str13.isnumeric()
True
- 如果字符串中字符都是小写,则返回True,否则返回Flase:islower()
>>> str14='奥特曼超人'
>>> str14.islower()
False
- 如果字符串中字符都是大写,则返回True,否则返回Flase:isupper()
>>> str15='奥特曼超人'
>>> str15.isupper()
False
- 如果字符串只包含空格,则返回True,否则返回Flase:isspace()
>>> str16=' '
>>> str16.isspace()
True
- 如果字符串是标题化(所有单词都是以大写开始,其余字母均小写),则返回True,否则返回Flase:istitle()
>>> str17='Hello,Djy'
>>> str17.istitle()
True
- 以字符串为分隔符,插入到sub中所有的字符之间:join(sub)
>>> str18='DJY'
>>> str18.join('fxw')
'fDJYxDJYw'
- 返回一个左对齐的字符串,并用空格填充至长度为width的新字符串:ljust(width)
>>> str19='DJY'
>>> str19.ljust(20)
'DJY '
- 将字符串中所有的大写字母转化为小写:lower()
>>> str20='DJY'
>>> str20.lower()
'djy'
- 去掉字符串左边的所有空格:lstrip()
>>> str21=' DJY'
>>> str21.lstrip()
'DJY'
- 找到子字符串sub,把字符串分成一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符串',","):partition(sub)
>>> str22='djyandfxw'
>>> str22.partition('and')
('djy', 'and', 'fxw')
- 把字符串中的old子字符串替换成new子字符串,如果指定count 则替换不能超过count次:replace(old,new[,count])
>>> str23='djyandfxw'
>>> str23.replace('a','d',1)
'djydndfxw'
- 从右开始检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1(与find()类似):rfind(sub[,start[,end]])
- 从右开始检测sub是否包含在字符串中,如果有则返回索引值,否则会出现Error(与index()类似):rindex(sub[,start[,end]])
- 返回一个右对齐的字符串,并用空格填充长度至width的新字符串:rjust(width)
>>> str24='djyandfxw'
>>> str24.rjust(20)
' djyandfxw'
- 从右开始找子字符串sub,把字符串分成一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符串',",")(与partition(sub)类似):rpartition(sub)
-
删除字符串末尾的所有空格:rstrip()
>>> str25='djyandfxw ' >>> str25.rstrip() 'djyandfxw'
- 不带参数默认是以空格为分隔符切片为字符串,如果有设置maxsplit参数,则仅分割maxsplit个子字符串,返回切片后的子字符串拼接的列表:split(sep=None,maxsplit=-1)
>>> str26='djy python 2048 fxw'
>>> str26.split()
['djy', 'python', '2048', 'fxw']
- 按'n'分隔,返回一个包含各行作为元素的列表,如果指定keepends参数,则返回前keepends行:splitlines(([keepends]))
>>> str27='djy\npython\n2048\nfxw'
>>> str27.splitlines(2)
['djy\n', 'python\n', '2048\n', 'fxw']
- 检查字符串是否以prefix开头,是则返回True,否则返回False:startswith(prefix[,start[,end]])
>>> str28='djywanan'
>>> str28.startswith('d')
True
- 删除字符串前边和后边所有的空格,chars参数可以设置删除的字符:strip([chars])
>>> str29='djy wanan'
>>> str29.strip('d')
'jy wanan'
- 翻转字符串中的大小写:swapcase()
>>> str30='DJYwanan'
>>> str30.swapcase()
'djyWANAN'
- 返回标题化(所有的单词都是以大写开始,其余字母均为小写)的字符串:title()
>>> str31='DJY wanan'
>>> str31.title()
'Djy Wanan'
- 根据table的规则(可以由str.maketrans('a','b')定制)转换字符串中的字符:translate(table)
>>> str32='DJYDJYDJY'
>>> str32.translate(str.maketrans('DJY','FXW'))
'FXWFXWFXW'
- 将字符串中所有的小写转化为大写:upper()
>>> str33='djywanan'
>>> str33.upper()
'DJYWANAN'
- 返回长度为width的字符串,原字符串右对齐,前面用0填充:zfill(width)
>>> str34='djywanan'
>>> str34.zfill(20)
'000000000000djywanan'
- 将字符串格式化:format()
1)使用位置参数:
>>> 'I like {1},{0},in particular {2}.--{2}'.format('music','dance','DJY')
'I like dance,music,in particular DJY.--DJY'
>>> list1=['music','dance','DJY']
>>> 'I like {},{},in particular {}'.format(*list1)
'I like music,dance,in particular DJY'
位置参数不受顺序约束,只要format里有对应的参数值即可为{},参数索引从0开,传入位置参数列表可用*列表。
2)使用关键字参数:
>>> hash1={'music':'psychedelic rock','dance':'Latin','name':'DJY'}
>>> 'I like {music},{dance},in particular {name}'.format(**hash1)
'I like psychedelic rock,Latin,in particular DJY'
>>> hash1={'music':'psychedelic rock','dance':'Latin','name':'DJY'}
>>> 'I like {music},{dance},in particular {name}'.format(music='classical music',dance='tango',name='FXW')
'I like classical music,tango,in particular FXW'
关键字参数必须要一一对应,以**字典格式用字典输入关键字参数。
3)如果想输出{}
>>> '{{0}}'.format('djy')
'{0}'
4)精度与进制转换:
>>> '{0:.2f}{1}'.format(1/2,'km')
'0.50km'
>>> '{0:x}'.format(10) #转换成十六进制
'a'
>>> '{:,}'.format(123456789) #千分位格式化
'123,456,789'
5)填充与格式化:{填充字符}
>>> '{0:*>10}'.format(20) #<左对齐,>右对齐,=居中
'********20'
- 以encoding指定的编码格式对字符串进行编码,以decoding指定的解码码格式对字符串进行解码:encode(encoding='utf-8',errors='strict')、decode(encoding='utf-8',errors='strict')
Python3中,以str型代替了unicode类型,经过编码后变为了字节类型(bytes),而但是两个函数的使用方法不变:
>>> a='djy'
>>> a_utf8=a.encode("UTF-8") #以UTF-8编码对a进行编码,获得bytes类型对象
>>> a_utf8.decode("UTF-8",'strict') #对a_utf8进行解码得到的结果,将无法还原原来的字符串内容
'djy'
END!