3.格式化输出、字符串转义编码和深浅复制
格式化输出和字符串转义
一、 格式化输出—>传统方法
%s:通过str() 字符串转换来格式化
了解:
%d %数字
>>> '这个占位符是为%d占位的'%1 '这个占位符是为1占位的'
%f %浮点数
>>> '%f'%1.1 '1.100000' >>> '这个占位符是为%f占位的'%1.1 '这个占位符是为1.100000占位的' >>> '这个占位符是为%.2f占位的'%1.1 '这个占位符是为1.10占位的' >>> '这个占位符是为%.8f占位的'%1.1 '这个占位符是为1.10000000占位的'
%c %ASCII字符
>>> '这个占位符是为%c占位的'%36 '这个占位符是为$占位的' >>> '这个占位符是为%c占位的'%37 '这个占位符是为%占位的' >>> '这个占位符是为%c占位的'%40 '这个占位符是为(占位的'
%o %8进制
>>> '这个占位符是为%o占位的'%14 '这个占位符是为16占位的' >>> '这个占位符是为%o占位的'%12 '这个占位符是为14占位的' >>> '这个占位符是为%o占位的'%13 '这个占位符是为15占位的'
%x %16进制
>>> '这个占位符是为%x占位的'%16 '这个占位符是为10占位的' >>> '这个占位符是为%x占位的'%15 '这个占位符是为f占位的' >>> '这个占位符是为%x占位的'%10 '这个占位符是为a占位的'
‘%-6.3f’%10.3 左对齐
>>> '这个占位符是为%-8.3f占位的'%9.4 '这个占位符是为9.400 占位的' >>> '这个占位符是为%8.3f占位的'%9.4 '这个占位符是为 9.400占位的'
‘%+-6.3f’%10.3 显示正负
>>> '这个占位符是为%+-8.3f占位的'%9.4 '这个占位符是为+9.400 占位的' >>> '这个占位符是为%-8.3f占位的'%-9.4 '这个占位符是为-9.400 占位的'
‘%5s’%’ab’ 格式化长度
>>> '这个占位符是为%5s占位的'%9 '这个占位符是为 9占位的'
二、Python方法
'{ :.2f }'.format(12.333) 保留小数点后两位
'{ a:.2f }'.format(a = 12.333)
>>> '{:.2f}'.format(0.3333) '0.33' >>> '{:.3f}'.format(0.3333) '0.333'
'{:.2%}'.format(0.333) 百分比格式
>>> '{:.3%}'.format(0.3333) '33.330%' >>> '{:.2%}'.format(0.3333) '33.33%'
'{0:x}'.format(20) 转换成十六进制
>>> '{0:x}'.format(16) '10' >>> '{0:x}'.format(20) '14' >>> '{0:x}'.format(18) '12'
'{0,o}'.format(20) 转换成八进制
>>> '{0:o}'.format(16) '20' >>> '{0:o}'.format(18) '22' >>> '{0:o}'.format(20) '24'
进制转换的时候用{0:进制}
‘{:0<10}'.format(12.3) 右对齐,长度为10
'{:x<10}'.format(13.44) 数字补x
'{:0>10}'.format(13.44) 左对齐
'{:0^10}'.format(13.44) 两边对齐
>>> '这个大括号{0:<10}占的位置'.format(16) '这个大括号16 占的位置' >>> '这个大括号{0:<10}占的{1:<6}位置'.format(16,99) '这个大括号16 占的99 位置' >>> '这个大括号{1:<10}占的{0:<6}位置'.format(16,99) '这个大括号99 占的16 位置' >>> '这个大括号{1:?<10}占的{0:=<6}位置'.format(16,99) '这个大括号99????????占的16====位置' >>> '{:=^50}'.format('名片') '========================名片========================'
三、字符串的转义
\n 换行
>>> print('sdadas\nacsaca') sdadas acsaca
\t 水平制表符
>>> print('hello\t111\t222\t333') hello 111 222 333 >>> print('hello\t111\t222\t333\npython\t444\t555\t666') hello 111 222 333 python 444 555 666
\b 退格
>>> print('asdf\r1234') 1234 >>> print('asdf\r123') 123f >>> print('asdf\r12') 12df >>> print('asdf\r1') 1sdf
\r 回车, 当前位置移到本行开头
>>> print('asdf\r1234') 1234 >>> print('asdf\r123') 123f >>> print('asdf\r12') 12df >>> print('asdf\r1') 1sdf
\\ 代表反斜杠 \
>>> print('xdcavf\\casafv') xdcavf\casafv
\' 代表一个单引号
>>> print('xdcavf\'casafv') xdcavf'casafv
\0 代表一个空字符
>>> print('xdcavf\0casafv') xdcavfcasafv
\a 系统提示音
#反转义 >>> r'123\n134' '123\\n134'
#去掉字符串转义 >>> print(r'aaokdovrr\nvvribrvrvpr') aaokdovrr\nvvribrvrvpr
字符串编码
一、编码
>>> '潭州'.encode(encoding='utf8') b'\xe6\xbd\xad\xe5\xb7\x9e' >>> '潭州'.encode(encoding='gbk') b'\xcc\xb6\xd6\xdd'
bytes和bytearray
一、bytes二进制序列类型
#可以下标索引取值
>>> a = '潭州'.encode(encoding='utf8') >>> type(a) <class 'bytes'>
>>> a = b'asg' #二进制字符串对象:bytes(b'abc') >>> b = bytes(3) #指定长度的零填充字节对象:bytes(3) >>> type(a) <class 'bytes'> >>> type(b) <class 'bytes'>
二、bytearray二进制数组
>>> a = bytearray(b'asd') >>> b = bytearray(3) >>> type(a) <class 'bytearray'> >>> type(b) <class 'bytearray'>
#同上
深浅复制
>>> a = [1,2,3] >>> li = [11,22,33,a] >>> li [11, 22, 33, [1, 2, 3]] >>> li1 = li.copy() #浅复制 >>> import copy >>> li2 = copy.deepcopy(li) #深复制 >>> a.pop() 3 >>> li1 [11, 22, 33, [1, 2]] >>> li2 [11, 22, 33, [1, 2, 3]]