Python字符串的格式化语法

标准格式:

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

1.对齐([align])选项

含义
'<'强制字符串在可用空间内左对齐(默认)
'>'强制字符串在可用空间内右对齐
'='强制将填充放置在符号(如果有)之后但在数字之前的位置(这适用于以 “+000000120” 的形式打印字符串)
'^'强制字符串在可用空间内居中

 

例子:

"{:<30}".format(250)
'250                           '

"{:>30}".format(250)
'                           250'

"{:0=30}".format(+250)
'000000000000000000000000000250'
"{:0=30}".format(-250)
'-00000000000000000000000000250'
"{:^30}".format(250)
'             250              '
如果在指定宽度的前面添加一个 '0',则表示为数字类型(其它类型无效哦)启用感知正负号的 '0' 填充效果。

例:

 "{:010}".format(-520)

'-000000520'

2.你还可以在对齐([align])选项的前面通过填充选项([fill])指定填充字符。

例:

"{1:&<30}""{0:&<30}".format(250, 520)
'520&&&&&&&&&&&&&&&&&&&&&&&&&&&250&&&&&&&&&&&&&&&&&&&&&&&&&&&'

3.符号([sign])选项仅对数字类型有效,可以使用下面 3 个值

含义
'+'正数在前面添加正号(+),负数在前面添加负号(-)
'-'只有负数在前面添加符号(-),默认行为
空格

正数在前面添加一个空格,负数在前面添加负号(-)

"{:+} {:-}".format(520, -250)

'+520 -250'

除此之外,还可以设置千位分隔符,它有两个值可以选择 —— ',' 或 '_'

>>> "{:,}".format(1234)

'1,234'

>>> "{:_}".format(1234)

'1_234'

>>> "{:,}".format(123)

'123'

>>> "{:,}".format(123456789)

'123,456,789'

4.精度([.precision])选项是一个十进制整数,对于不同类型的参数,它的效果是不一样的:

  • 对于以 'f' 或 'F' 格式化的浮点数值来说,是限定小数点后显示多少个数位
  • 对于以 'g' 或 'G' 格式化的浮点数值来说,是限定小数点前后共显示多少个数位
  • 对于非数字类型来说,限定最大字段的大小(换句话说就是要使用多少个来自字段内容的字符)
  • 对于整数来说,则不允许使用该选项值

例:

"{:.2f}".format(3.1415)

'3.14'

"{:.2g}".format(3.1415)

'3.1'

 "{:.6}".format("I love FishC")

'I love'

5.最后,类型([type])选项决定了数据应该如何呈现。

以下类型适用于整数:5|X[^.b#!_"B+MsK?ejc1Za

含义
'b'将参数以二进制的形式输出
'c'将参数以 Unicode 字符的形式输出
'd'将参数以十进制的形式输出
'o'将参数以八进制的形式输出
'x'将参数以十六进制的形式输出
'X'将参数以十六进制的形式输出
'n'跟 'd' 类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置
None跟 'd' 一样

例:

>>> "{:b}".format(80)

'1010000'

>>> "{:c}".format(80)

'P'

>>> "{:d}".format(80)

'80'

>>> "{:o}".format(80)

'120'

>>> "{:x}".format(80)

'50'

>>> "{:n}".format(80)

'80'

这还有个人性化设置,就是井号([#])选项,参数以二进制、八进制或十六进制在字符串中输出的时候,会自动追加前缀 "0b"、"0o" 和 "0x"。

>>> "{:#b}".format(80)

'0b1010000'

>>> "{:#o}".format(80)

'0o120'

>>> "{:#x}".format(80)

'0x50'

以下类型值适用于浮点数、复数和整数(自动转换为等值的浮点数)如下:

含义
'e'将参数以科学记数法的形式输出(以字母 'e' 来标示指数,默认精度为 6)
'E'将参数以科学记数法的形式输出(以字母 'E' 来标示指数,默认精度为 6)
'f'将参数以定点表示法的形式输出(“不是数” 用 'nan' 标示,无穷用 'inf' 标示,默认精度为 6)
'F'将参数以定点表示法的形式输出(“不是数” 用 'NAN' 标示,无穷用 'INF' 标示,默认精度为 6)
'g'通用格式,小数以 'f' 形式输出,大数以 'e' 的形式输出
'G'通用格式,小数以 'F' 形式输出,大数以 'E' 的形式输出示
'n'跟 'g' 类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置
'%'以百分比的形式输出(将数字乘以 100 并显示为定点表示法('f')的形式,后面附带一个百分号
None类似于 'g',不同之处在于当使用定点表示法时,小数点后将至少显示一位;默认精度与给定值所需的精度一致

注:% 不适用于复数

>>> "{:e}".format(3.1415)

'3.141500e+00'

>>> "{:E}".format(3.1415)

'3.141500E+00'

>>> "{:f}".format(3.1415)

'3.141500'

>>> "{:g}".format(123456789)

'1.23457e+08'

>>> "{:g}".format(1234.56789)

'1234.57'

>>> "{:%}".format(0.98)

'98.000000%'

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值