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]]

猜你喜欢

转载自www.cnblogs.com/lyh-520/p/9284002.html