format格式化字符串方法相较于老版%格式方法的优点:

1.不需要理会数据类型的问题,在%方法中'%s'只能替代字符串类型.

2.单个参数可以多次输出,参数顺序可以不相同.

3.填充方式十分灵活,对齐方式十分强大.

4.官方推荐,%方法将会在后面的版本被淘汰.



format()方法的基本使用格式:

  <模板字符串>.format(<逗号分隔的参数>)

<模板字符串>是由一系列的槽组成,用来控制修改字符串中嵌入值出现的位置,其基本思想是将format()方法的<逗号分隔的参数>中的参数按照序号关系替换到<模板字符串>的槽中.

槽用大括号{}表示,如果大括号中没有序号,则按照位置顺序替换:

>>> print('{}:计算机{}的CPU占用率为{}%'.format('2017-09-30', 'Python', 10))
2017-09-30:计算机Python的CPU占用率为10%

如果大括号中指定了使用参数的序号,按照序号对应参数替换.参数从0开始编号:

>>> print('{1}:计算机{0}的CPU占用率为{2}%.'.format('python', '2017-09-30', 10))
2017-09-30:计算机python的CPU占用率为10%.

除了通过序号来指定填充的参数外,还可以通过关键字参数,下标,字典的key和对象的属性来填充

>>> print('{date}:计算机{process}的CPU占用率为{per}%.'.format(date='2017-09-30', process='python', per=10))    # 关键字参数
2017-09-30:计算机python的CPU占用率为10%.
>>> print('I am {arg[0]}, I love {arg[1]}'.format(arg=arg)) # 下标
I am Liu, I love python >>> person = {'name': 'Liu', 'age': 24, 'job': 'Pythoneer'}
>>> print('I am {person[name]}, {person[age]} years old, a {person[job]}.'.format(person=person))
I am Liu, 24 years old, a Pythoneer. Class Person():
def __init__(self):
self.name, self.age, self.job = 'Liu', 24, 'Pythoneer'
>>> me = Person()
>>> print('I am {me.name}, {me.age} years old, a {me.job}'.format(me=me))
I am Liu, 24 years old, a Pythoneer.

format()方法中的槽除了包含参数序号,还可以包括格式控制符.此时,槽的内部样式如下:
   {:}
其中,用来控制参数显示时的格式.
![](//upload-images.jianshu.io/upload_images/6993533-409756ce42384720.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
包括:,6个字段,这些字段都是可选的,可以组合使用.
,和是3个相关字段.
- :指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比设定值大,则会使用实际宽度.如果该值的实际位数小于指定宽度,则位数将被默认以空格补充.
- :指参数在内输出是的对齐方式,分别使用和=三个符号表示左对齐,右对齐和居中对齐.
- :指内除了参数外的字符采用什么方式表示,默认采用空格.
```python
>>> s = 'PYTHON'
>>> '{:30}'.format(s)
'PYTHON '
>>> '{:>30}'.format(s)
' PYTHON'
>>> '{:*^30}'.format(s)
'************PYTHON************'
>>> '{:-^30}'.format(s)
'------------PYTHON------------'
>>> '{:5}'.format(s)
'PYTHON'
```
- 逗号,:中逗号(,)用于显示数字的千位分隔符
```python
>>> '{:-^20,}'.format(123456789)
'----123,456,789-----'
>>>'{:-^20}'.format(123456789) #对比输出
'-----123456789------'
>>> '{:-^20,}'.format(12345.67890)
'----12,345.6789-----'
```
- :表示两个含义,有小数点(.)开头.对于浮点数,精度表示小数部分输出的有效位数.对于字符串,精度表示输出的最大长度.
```python
>>> '{:.2f}'.format(12345.67890)
'12345.68'
>>> '{:H^20.3f}'.format(12345.67890)
'HHHHH12345.679HHHHHH'
>>> '{:.4}'.format('PYTHON')
'PYTH'
```
- :表示输出整数和浮点数类型的格式规则.对于整数类型,输出格式包括6中:
  b: 输出整数的二进制方式;
  c: 输出整数对应的Unicode字符;
  d: 输出整数的十进制方式;
  o: 输出整数的八进制方式;
  x:输出整数的小写十六进制方式;
  X:输出整数的大写十六进制方式;
```python
>>> '{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}'.format(425)
'110101001, Ʃ, 425, 651, 1a9, 1A9'
```
 对于浮点数类型,输出格式包括4种:
  e: 输出浮点数对应的小写字母e的指数形式;
  E: 输出浮点数对应的大写字母E的指数形式;
  f: 输出浮点数的标准浮点形式;
  %: 输出浮点数的百分比形式;
浮点数输出是尽量是用表示小数部分的宽度,有助于更好控制输出格式.
```python
>>> '{0:e}, {0:E}, {0:f}, {0:%}'.format(3.14)
'3.140000e+00, 3.140000E+00, 3.140000, 314.000000%'
>>> '{0:.2e}, {0:.2E}, {0:.2f}, {0:.2%}'.format(3.14)
'3.14e+00, 3.14E+00, 3.14, 314.00%'
```


#####其他
**转义{和}符号**
使用{}对大括号进行转义
```python
>>> 'hello {}, {{}}'.format('world')
'hello world, {}'
```
**处理时间对象**
```python
>>> from datetime import datetime
>>> '{:%Y-%m-%d %X}'.format(datetime.now())
'2017-09-30 16:24:29'
```
参考官方文档中对[时间的格式化字符](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior).
**一个快捷方法**
```python
>>> a, b = 'Life', 'Python'
>>> f'{a} is short, you need {b}'
'Life is short, you need Python'
```

Python格式化字符串--format的更多相关文章

  1. python格式化字符串format函数

    1. format可以接受无限个的参数,位置可以不按顺序: In [1]: "{} {}".format("hello","world") ...

  2. python格式化字符串format的用法

    填充与对齐 填充常跟对齐一起使用 ^.<.>分别是居中.左对齐.右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充 比如 In [15]: '{:> ...

  3. Python 的格式化字符串format函数

    阅读mattkang在csdn中的博客<飘逸的python - 增强的格式化字符串format函数>所做笔记 自从python2.6开始,新增了一种格式化字符串的函数str.format( ...

  4. Python格式化字符串~转

    Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...

  5. Python格式化字符串知多少

    字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(%) 替换.如一句问候语: ...

  6. Python格式化字符串和转义字符

    地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义     符   号     说     明 ...

  7. 飘逸的python - 增强的格式化字符串format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...

  8. (转)飘逸的python - 增强的格式化字符串format函数

    原文:https://blog.csdn.net/handsomekang/article/details/9183303 Python字符串格式化--format()方法-----https://b ...

  9. 【转】Python格式化字符串str.format()

    原文地址:http://blog.xiayf.cn/2013/01/26/python-string-format/ 每次使用Python的格式字符串(string formatter),2.7及以上 ...

随机推荐

  1. 转:swagger 入门

    前言 swagger ui是一个API在线文档生成和测试的利器,目前发现最好用的. 为什么好用?Demo 传送门 支持API自动生成同步的在线文档 这些文档可用于项目内部API审核 方便测试人员了解A ...

  2. 2017春季 JMU 1414软工助教 链接汇总

    助教自我介绍 学生博客链接和coding链接 [1414软工助教]团队博客汇总 助教总结 评分 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1: ...

  3. python类型转换、数值操作(收藏)

    最近学习python语言,碰到数据类型间的转换问题.看到一篇文章总结的挺详细,收藏之备用. 类型转换 代码  1 函数                      描述  2 int(x [,base  ...

  4. Linux命令行学习

    "mkdir + 文件夹名字" 创建文件夹 "pwd" 显示当前工作目录的绝对路径. "touch" 创建空文件. "cat /p ...

  5. thinkphp介绍及访问方式

    ThinkPHP框架 1.解压到www目录下,里面有一个index文件是入口文件,通过修改里面的APP_PATH进入不同的应用 2.ThinkPHP文件夹是核心文件夹,里面东西不要修改,可以查看,比如 ...

  6. 快递鸟顺丰物流api接口对接多种方法整理

    目前很多自营电商平台.ERP系统.仓储系统.快递柜企业,对物流模块数据需求还是比较旺盛的.之前有介绍过简单的接口对接方法,这次给大家整理介绍两种快递数据的获取方法. 接口秘钥可以向顺丰公司申请,或者一 ...

  7. Android 之json解析

    JSON(JavaScript Object Notation) 定义:字符串 键值对 解析方法有JSON,谷歌GSON,阿里巴巴FastJSON(推荐) 一种轻量级的数据交换格式,具有良好的可读和便 ...

  8. win7系统Myeclipse下切换SVN用户

     Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后 ...

  9. 月亮之眼_KEY

    [问题描述] 吉儿是一家古董店的老板娘,由于她经营有道,小店开得红红火火.昨天,吉儿无意之中得到了散落民间几百年的珍宝--月亮之眼.吉儿深知"月亮之眼"价值连城:它是由许多珍珠相连 ...

  10. Python uwsgi 无法安装以及编译报错的处理方式

    之前安装uwsgi的时候编译一步有出错,因为比较早,部分错误代码已经找不到了,网上找了部分错误信息, 现把解决方式共享出来. 环境:CentOS release 6.4   Python 2.7.3 ...