Python学习之format函数的使用

Posted #忘乎所以#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之format函数的使用相关的知识,希望对你有一定的参考价值。

python从2.6开始支持format,新的更加容易读懂的字符串格式化方法,
从原来的% 模式变成新的可读性更强的
  1. 花括号声明{}、用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序号, 或者 变量名直接引用。
  2. 从format参数引入的变量名 、
  3. 冒号:、
  4. 字符位数声明、
  5. 空白自动填补符 的声明
  6. 千分位的声明
  7. 变量类型的声明: 字符串s、数字d、浮点数f
  8. 对齐方向符号 < ^ >
  9. 属性访问符中括号
  10. 使用惊叹号!后接a 、r、 s,声明 是使用何种模式, acsii模式、引用__repr__ 或 __str__
  11. 增加类魔法函数__format__(self, format) , 可以根据format前的字符串格式来定制不同的显示, 如: ’{:xxxx}’  此时xxxx会作为参数传入__format__函数中。 
 
 
综合举例说明:
  1. 如: 千分位、浮点数、填充字符、对齐的组合使用:
输入: \'{:>18,.2f}\'.format(70305084.0)     # :冒号+空白填充+右对齐+固定宽度18+浮点精度.2+浮点数声明f
输出:\'     70,305,084.00\'
 
  1. 复杂数据格式化
输入: data = [4, 8, 15, 16, 23, 42]
            \'{d[4]} {d[5]}\'.format(d=data)
输出: 23 42
 
  1. 复杂数据格式化:
输入: 
class Plant(object):
    type = \'tree\'
    kinds = [{\'name\': \'oak\'}, {\'name\': \'maple\'}]

 
\'{p.type}: {p.kinds[0][name]}\'.format(p=Plant())
输出:tree: oak
 
 
 
 
 
分类举例说明:
 
  • 花括号声明{}、用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序号, 或者 变量名直接引用。
        \'{} {}\'.format(\'one\', \'two\')
\'{1} {0}\'.format(\'one\', \'two\')
 
Output
two one
 
 
Setup
data = {\'first\': \'Hodor\', \'last\': \'Hodor!\'}



Old

\'%(first)s %(last)s\' % data


New

\'{first} {last}\'.format(**data)


Output

Hodor Hodor!
 
 
 
  • 从format参数引入的变量名 、
 
  • 冒号:、字符位数声明、空白自动填补符 的声明、千分位的声明、变量类型的声明: 字符串s、数字d、浮点数f 、对齐方向符号 < ^ >
\'{:.5}\'.format(\'xylophone\')


Output

xylop
        
\'{:^10}\'.format(\'test\')


Output

   test   
 
\'{:.{}}\'.format(\'xylophone\', 7)


Output

xylopho
\'{:4d}\'.format(42)


Output

  42
\'{:06.2f}\'.format(3.141592653589793)


Output

003.14
 
\'{:+d}\'.format(42)


Output

+42
 
千分位、浮点数、填充字符、对齐的组合使用:
 
输入: \'{:>18,.2f}\'.format(70305084.0)     # :冒号+空白填充+右对齐+固定宽度18+浮点精度.2+浮点数声明f
输出:\'     70,305,084.00\'
 
 
  • 属性访问符中括号

Setup

person = {\'first\': \'Jean-Luc\', \'last\': \'Picard\'}


New

\'{p[first]} {p[last]}\'.format(p=person)


Output

Jean-Luc Picard

Setup

data = [4, 8, 15, 16, 23, 42]


New

\'{d[4]} {d[5]}\'.format(d=data)


Output

23 42
 

Setup

class Plant(object):
    type = \'tree\'
    kinds = [{\'name\': \'oak\'}, {\'name\': \'maple\'}]


New

\'{p.type}: {p.kinds[0][name]}\'.format(p=Plant())


Output

tree: oak
 
 
  • 惊叹号!限定访问__repr__等魔法函数:

Setup

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
 
 
  • 增加类魔法函数__format__(self, format) , 可以根据format前的字符串格式来定制不同的显示, 如: ’{:xxxx}’  此时xxxx会作为参数传入__format__函数中。 

Setup

class HAL9000(object):

    def __format__(self, format):
        if (format == \'open-the-pod-bay-doors\'):
            return "I\'m afraid I can\'t do that."
        return \'HAL 9000\'


New

\'{:open-the-pod-bay-doors}\'.format(HAL9000())


Output

I\'m afraid I can\'t do that.
 
 
  • 时间日期的特例:

Setup

from datetime import datetime


New

\'{:%Y-%m-%d %H:%M}\'.format(datetime(2001, 2, 3, 4, 5))


Output

2001-02-03 04:05
 
以上来自https://www.cnblogs.com/ToDoToTry/p/5635863.html,在此记录,以便日后学习。

以上是关于Python学习之format函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

python学习之模块--模块

Python面向对象学习之八,装饰器

python学习之解决中英文混合输出的排版问题

Python学习之函数初识一

python学习之第八篇:Python中的函数基础

Python学习之认识函数