字符串10:format()格式化语法进阶

目录

0. 格式化语法结构

1. align、width、fill选项

1.1 '<'左对齐

1.2 '>'右对齐

1.3 '='填充

1.4 '^'居中

1.5 fill选项

2. sign选项

2.1 '+'

2.2 '-'

2.3 空格

3. grouping_option选项

4. .precision选项

4.1.precision直接使用

4.2 通过'f' 或 'F' 使用

4.3通过'g' 或 'G' 使用

5. type选项-整数型

5.1 'b'

5.2 'c'

5.3 'd'、'n'、None

5.4 'o'

5.5 'x'、'X'

6. type选项-浮点&复数

6.1 'e'、'E'

6.2 'f'、'F'

6.3 'g'、'G'

6.4 'n'

6.5 '%'

6.6 None

7. 多选选参数调节


0. 格式化语法结构

再次说明字符串的标准格式化规范语法如下:

format_spec     ::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill            ::=  <any character>
align           ::=  "<" | ">" | "=" | "^"
sign            ::=  "+" | "-" | " "
width           ::=  digit+
grouping_option ::=  "_" | ","
precision       ::=  digit+
type            ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

1. align、width、fill选项

对齐(**[align]**)选项,一共有 '<'、'>'、'='、'^'4 个值可供使用。

既然要实现对齐,那么就需要指定一个更大的空间才行(否则没意义),更大的空间可以通过宽度(**[width]**)选项来指定。

1.1-1.4章节中,所有'<'、'>'、'='、'^'后的数值都是width值。

1.1 '<'左对齐

强制字符串在可用空间内左对齐;

只输入width选项数值,除非()内元素为复数,否则即默认左对齐;

整数、字符串、浮点数、复数可以使用format对齐,列表、元组则报错;

浮点数、复数对齐时,数字、标点符号'.'、复数符号'j'都占据一位;

当给出的width宽度小于元素长度,则直接插入元素,对齐没意义。

#强制字符串0在3字节可用空间内左对齐;
'中{:<3}文'.format('0')
'中0  文'

#只输入width选项数值,除非()内元素为复数,否则即默认左对齐
'中{:3}文'.format('0')
'中0  文'

#()内元素为复数时,只输入width默认为右对齐,可以通过使用<变为左对齐
'中{:3}文'.format(1j)
'中 1j文'
'中{:<3}文'.format(1j)
'中1j 文'

#整数、字符串、浮点数可以使用format对齐,列表、元组则报错;
'中{0:3}文'.format(0,'1',2.0,[3,4],(5,))
'中  0文'
'中{1:3}文'.format(0,'1',2.0,[3,4],(5,))
'中1  文'
'中{2:3}文'.format(0,'1',2.0,[3,4],(5,))
'中2.0文'

'中{3:3}文'.format(0,'1',2.0,[3,4],(5,))
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported format string passed to list.__format__

'中{4:3}文'.format(0,'1',2.0,[3,4],(5,))
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported format string passed to tuple.__format__

当给出的width宽度小于元素长度,则直接插入元素
'中{:3}文'.format('0123')
'中0123文'

1.2 '>'右对齐

强制字符串在可用空间内右对齐,支持整数、字符串、浮点数、复数;

#强制字符串在可用空间内右对齐,支持整数、字符串、浮点数、复数
'中{0:>5}文'.format('01',23,4.5,7+8j)
'中   01文'
'中{1:>5}文'.format('01',23,4.5,7+8j)
'中   23文'
'中{2:>5}文'.format('01',23,4.5,7+8j)
'中  4.5文'
'中{3:>5}文'.format('01',23,4.5,7+8j)
'中(7+8j)文'

1.3 '='填充

强制将填充放置在符号(如果有)之后但在数字之前的位置(这适用于以 “+000000120” 的形式打印字符串);

填充支持整型和浮点数,字符串、复数不可用于该方法;

填充数据在数字之前,或者在'-'符号和数字之间填充,'+'无效果;

#填充支持整型和浮点数,填充数据在数字之前,或者在'-'符号和数字之间填充
'中{0:=10}文'.format(12,-23,3.4,-3.4)
'中        12文'
'中{1:=10}文'.format(12,-23,3.4,-3.4)
'中-       23文'
'中{2:=10}文'.format(12,-23,3.4,-3.4)
'中       3.4文'
'中{3:=10}文'.format(12,-23,3.4,-3.4)
'中-      3.4文'

#填充对'+'无效果;
'中{:=10}文'.format(+3)
'中         3文'

#填充字符串、复数不可用报错
'中{:=10}文'.format(1j)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: '=' alignment flag is not allowed in complex format specifier

'中{:1=10}文'.format('3')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: '=' alignment not allowed in string format specifier

1.4 '^'居中

强制字符串在可用空间内居中;

当字符串不能恰好在中间时,整体在中间位置靠前一位;

支持整数、字符串、浮点数、复数,不支持列表、元组。

#强制字符串在可用空间内居中,当字符串不能恰好在中间时,整体在中间位置靠前一位
#支持整数、字符串、浮点数、复数
'中{0:^10}文'.format(0,'1',2.0,3j,[4],(5,6))
'中    0     文'
'中{1:^10}文'.format(0,'1',2.0,3j,[4],(5,6))
'中    1     文'
'中{2:^10}文'.format(0,'1',2.0,3j,[4],(5,6))
'中   2.0    文'
'中{3:^10}文'.format(0,'1',2.0,3j,[4],(5,6))
'中    3j    文'

#不支持列表、元组
'中{4:^10}文'.format(0,'1',2.0,3j,[4],(5,6))
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported format string passed to list.__format__

'中{5:^10}文'.format(0,'1',2.0,3j,[4],(5,6))
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported format string passed to tuple.__format__

1.5 fill选项

对齐([align])选项的前面通过填充选项(**[fill]**)指定填充字符;

直接在width值前加0,相当于设置了 [fill] 为 '0',然后 [align] 设置为 '=',加其他数值无效,该方法'='时一样,只支持填充整型、浮点型数据;

fill选项可以为数字、字母、符号、空格、空字符串,空格和空字符串与未填写fill一致,即默认填充空格;

fill选项只能填充单字符,否则报错。

#fill选项可以为数字、字母、符号、空格、空字符串
'中{:1>10}文'.format(666)
'中1111111666文'
'中{:&<10}文'.format('xyz')
'中xyz&&&&&&&文'
'中{:$=10}文'.format(-0.03)
'中-$$$$$0.03文'

#空格和空字符串与未填写fill一致,即默认填充空格;
'中{: ^10}文'.format(2+5j)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值