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. mysql 5.7 Warning: Using a password on the command line interface can be insecure. 解决方案

    百度了好多,发现都是lunix环境下的,没有找到windows和OS 的,在lunix环境下的解决方案一般就是修改数据库配置文件 my.conf 在Windows 中是没有my.cnf 文件,而是叫做 ...

  2. Beta阶段事后诸葛亮分析

    1.总结的提纲内容 a. 项目管理之事后诸葛亮会 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要解决用户无意识花钱,无法清楚看见钱去 ...

  3. 201521123048 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法 ...

  4. 201521123081《Java程序设计》 第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 参考资料:百 ...

  5. 201521123005 《Java程序设计》第1周学习总结

    1. 本章学习总结 了解JDK/JRE/JVM,学会了如何安装JDK 学会使用控制台和eclipse上运行java代码 了解PTA提交的常见套路 http://www.cnblogs.com/zhrb ...

  6. audio标签

    实例 一段简单的 HTML 5 音频: <audio src="someaudio.wav"> 您的浏览器不支持 audio 标签. </audio> 亲自 ...

  7. linux系统命令<一>----关机重启

    1.shutdown shutdown -h now   立刻关机 shutdown -h 20:00    20:00关机 shutdown -h +10   十分钟后关机 shutdown -r ...

  8. 移动商城第三篇【搭建Mybatis和Spring环境、编写Dao、Service在Core模块】

    Mybatis和Spring环境搭建 由于我们的所编写的dao层.service代码可能前台和后台都需要用到的,因此我们把环境搭建在core模块中 逆向工程 首先,我们要做的就是品牌管理,我们首先来看 ...

  9. Oracle-表的字段增加修改删除操作

    表结构修改 ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名 ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME ...

  10. Jupyter(Python)中无法使用Cache原理分析

    前言 最近需要在Jupyter中写一个类库,其中有一个文件实现从数据库中读取空间数据并加载为Feature对象,Feature对象是cartopy封装的geomery列表,能够方便的用于作图等.因为有 ...