快速记忆python函数-python之格式化字符串速记整理

一、格式化字符串的方式:

1、字符串表达式:

语法格式:"%s’ % var 或 "%s %d’ % (var1, var2)

说明:%s、%d等为格式类型说明符

例子:

>>> 'this is a %s' % ('pear')'this is a pear'

>>> 'there are %d %s and %d %s' % (2, 'pear', 5, 'apple')

'there are 2 pear and 5 apple'#使用字典格式

>>> 'there are %(count)d %(fruit)s' % {'count':5, 'fruit':'apples'}'there are 5 apples'

2、字符串format方法:

说明:使用字符串的format方法

例子:

#使用相对位置参数

>>> astring = 'there are {} {} and {} {}'

>>> astring.format(2, 'pears', 5, 'apples')'there are 2 pears and 5 apples'

#使用绝对位置参数

>>> astring = 'there are {0} {1} and {0} {2}'

>>> astring.format(2, 'pears', 'apples')'there are 2 pears and 2 apples'

#使用关键字参数

>>> astring = 'there are {count} {fruit1} and {count} {fruit2}'

>>> astring.format(count=2, fruit1='pears', fruit2='apples')

'there are 2 pears and 2 apples'

3、format内建函数:

说明:第1个参数为字符串、数字等,第2个参数为格式说明符,省略格式说明符,就相当于str(value)

例子:

#缺省类型为s(字符串),可以省略不写

>>> format('^表示居中,10表示宽度,不够的位用#填充','#^10')'^表示居中,10表示宽度,不够的位用#填充'

>>> format(123,'b')'1111011'

>>> format(123,'#b')'0b1111011'

>>>

4、已格式化的字符串直接量(也就是一个带格式的字符串,简称f-strings):

语法格式:f'{expression[:format-spicifier]}'

说明:类似于r'string'、b'byte sequence'的风格,f也可以是大写的F,表达式expression可以是直接量、变量,对象属性,函数调用、模块方法执行等,还可以结合!s或!r对表示执行str或repr函数。格式化说明符可以省略。

例子:

>>> f'{10:b}'

'1010'

>>> f'{10:x}'

'a'

>>> f'{12:x}'

'c'

>>> f'{12:X}'

'C'

>>> f'{12:#X}'

'0XC'

>>> f'{12:02X}'

'0C'

>>> f'{12:2X}'

'C'

>>> F'this is a hex number {12:#2X} and an octet number {29:#o}'

'this is a hex number 0XC and an octet number 0o35'

>>> importrandom>>> F'this is a hex number {random.randint(100,500):#2X} and an octet number {29:#o}'

'this is a hex number 0X8A and an octet number 0o35'

>>> importmath>>> print(f'The value of pi is approximately {math.pi:.3f}.')

The value of piis approximately 3.142.

#表示式为变量,效果类似于shell字符串中变量替换,同时还可以在替换后进行格式化

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}>>> for name, phone intable.items():

...print(f'{name:10} ==> {phone:10d}')

...

Sjoerd==> 4127Jack==> 4098Dcab==> 7678

>>> animals = 'eels'

>>> print(f'My hovercraft is full of {animals}.')

My hovercraftisfull of eels.>>> print(f'My hovercraft is full of {animals!r}.')

My hovercraftis full of 'eels'.

5、字符串手动格式化

语法格式:str.rjust([width][, padding-char])、str.rjust([width][, padding-char])、center([width][, padding-char])、str.zfill()

说明:字符串的左、右、中对齐方法,第1个参数为宽度,第2个为字符串宽度小于指定宽度后填充的字符,缺省为空格。str.zfill()用于数字串填充0

例子:

>>> '12'.zfill(5)'00012'

>>> '-3.14'.zfill(7)'-003.14'

>>> '3.14159265359'.zfill(5)'3.14159265359'

>>> 'this is a left indent string'.ljust(40)'this is a left indent string'

>>> 'this is a left indent string'.ljust(40,'-')'this is a left indent string------------'

>>>

二、通用标准格式化说明符及特殊格式说明符如下:

format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]

fill ::=

align ::= "<" | ">" | "=" | "^"

sign ::= "+" | "-" | " "

width ::= digit+

grouping_option ::= "_" | ","

precision ::= digit+

type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X"

旧的字符串表达式格式:

>>> '%#x' % 255, '%x' % 255, '%X' % 255

('0xff', 'ff', 'FF')

>>> format(255, '#x'), format(255, 'x'), format(255, 'X')

('0xff', 'ff', 'FF')

>>> f'{255:#x}', f'{255:x}', f'{255:X}'

('0xff', 'ff', 'FF')

表示一个百分号%使用特殊类型符%:

>>> points = 19

>>> total = 22

>>> 'Correct answers: {:.2%}'.format(points/total)

'Correct answers: 86.36%'

使用时间专用格式:

>>> import datetime

>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)

>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)

'2010-07-04 12:15:58'

嵌套参数和更复杂例子:

>>> for align, text in zip('<^>', ['left', 'center', 'right']):

... '{0:{fill}{align}16}'.format(text, fill=align, align=align)

...

'left<<<<<<<<<<<<'

'^^^^^center^^^^^'

'>>>>>>>>>>>right'

>>>

>>> octets = [192, 168, 0, 1]

>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)

'C0A80001'

>>> int(_, 16)

3232235521

>>>

>>> width = 5

>>> for num in range(5,12):

... for base in 'dXob':

... print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')

... print()

...

5 5 5 101

6 6 6 110

7 7 7 111

8 8 10 1000

9 9 11 1001

10 A 12 1010

11 B 13 1011

更详细的格式化说明可以参见python3.7.1参考手册的章节:7.1. Fancier Output Formatting

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值