Python:% 和 .format() 的使用

Python:% 和 .format() 的使用基本的格式化值转换填充和对齐字符串截断长串结合截断与填充数字填充数字带符号的数字有名字的占位符日期时间参数化的格式自定义对象多年来,Python 具有出色的字符串格式化程序,但是有关它们的文档在理论和技术上都太过严格了。通过此站点,我们尝试通过实际示例向您展示新旧样式字符串格式化 API 涵盖的最常见的用例。此页面上的所有示例均可与 Python 2.7、3.2、3.3、3.4 和 3.5 一起使用,而无需任何额外的库。基本的格式化简单的位置格式化可能
摘要由CSDN通过智能技术生成

多年来,Python 具有出色的字符串格式化程序,但是有关它们的文档在理论和技术上都太过严格了。通过此站点,我们尝试通过实际示例向您展示新旧风格的字符串格式化 API 涵盖的最常见的用例。

此页面上的所有示例均可与 Python 2.7、3.2、3.3、3.4 和 3.5 一起使用,而无需任何额外的库。

基本的格式化

简单的位置格式化可能是最常见的用例。如果参数的顺序不太可能改变,并且只有很少的元素要连接,可以采用这样的格式化风格。

由于元素没有像名称一样具有描述性,因此这个简单的风格仅应用于格式化相对少量的元素。

Old '%s %s' % ('one', 'two')
New '{} {}'.format('one', 'two')
Output one two
Old '%d %d' % (1, 2)
New '{} {}'.format(1, 2)
Output 1 2

使用新的格式化风格(在 Python 2.6 中甚至是强制性的),可以为占位符提供显式的位置索引。

这允许在不更改参数的情况下重新排列显示顺序。

此操作不适用于旧的格式化风格。

New '{1} {0}'.format('one', 'two')
Output two one

值转换

新的简单格式化器默认调用对象的 __format__() 方法来呈现它。如果你只想呈现 str(…) 或 repr(…) 的输出,你可以使用 !s 或 !r 转换标志。

class Data(object):

    def __str__(self):
        return 'str'

    def __repr__(self):
        return 'repr'
Old '%s %r' % (Data(), Data())
New {0!s} {0!r}'.format(Data())
Output str repr

在 Python 3 中,存在一个附加的转换标志,该标志使用 repr(…) 的输出,但使用 ascii(…) 代替。

class Data(object):

    def __repr__(self):
        return 'räpr'
Old '%r %a' % (Data(), Data())
New '{0!r} {0!a}'.format(Data())
Output räpr r\xe4pr

填充和对齐字符串

默认情况下,将值格式化为仅表示内容所需的字符。但是,也可以将值填充到特定的长度。

不幸的是,新旧格式化风格之间的默认对齐方式有所不同。旧风格的默认为右对齐,而新风格的则为左对齐。

右对齐:

Old '%10s' % ('test',)
New '{:>10}'.format('test')
Output       test

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值