本文主要由Python String Format 一文翻译整理而来,在python中使用 % 进行格式化字符串由来已久,不过在python2.7+ 的版本中引入了新的格式化字符串的方法。虽然%号的方式依旧可用,不过在[PEP-3101] 中已有含蓄的警告称将完全淘汰python2.6之前使用的这些方法。下面部分我们就来看下python2.7+ 的string format是怎样的。

一、格式字符串手册

数字格式化

下面的表格展示了使用Python的后起新秀str.format()格式化数字的多种方法,包含浮点数格式化与整数格式化示例。可使用print("FORMAT".format(NUMBER));来运行示例,因此你可以运行:print("{:.2f}".format(3.1415926));来得到第一个示例的输出。数字格式输出描述

3.1415926{:.2f}3.14保留小数点后两位

3.1415926{:+.2f}+3.14带符号保留小数点后两位

-1{:+.2f}-1.00带符号保留小数点后两位

2.71828{:.0f}3不带小数

5{:0>2d}05数字补零 (填充左边, 宽度为2)

5{:x<4d}5xxx数字补x (填充右边, 宽度为4)

10{:x<4d}10xx数字补x (填充右边, 宽度为4)

1000000{:,}1,000,000以逗号分隔的数字格式

0.25{:.2%}25.00%百分比格式

1000000000{:.2e}1.00e+09指数记法

13{:10d}13右对齐 (默认, 宽度为10)

13{:<10d}13左对齐 (宽度为10)

13{:^10d}13中间对齐 (宽度为10)

二、string.format()基础

如下是两个基本字符串替换的示例,符号{}是替换变量的占位符。若没有指定格式,则直接将变量值作为字符串插入。s1 = "so much depends upon {}".format("a red wheel barrow")

s2 = "glazed with {} water beside the {} chickens".format("rain", "white")

你也可以使用变量的位置数值,在字符串中改变它们,进行格式化时,会更加灵活。如果搞错了顺序,你可以轻易地修正而不需要打乱所有的变量。s1 = " {0} is better than {1} ".format("emacs", "vim")

s2 = " {1} is better than {0} ".format("emacs", "vim")

三、更老的格式字符串符号"%"

Python2.6之前,格式字符串的使用方法相对更简单些,虽然其能够接收的参数数量有限制。这些方法在Python3.3中仍然有效,但已有含蓄的警告称将完全淘汰这些方法,目前还没有明确的时间进度表。[PEP-3101]

格式化浮点数:pi = 3.14159

print(" pi = %1.2f ", % pi)

多个替换值s1 = "cats"

s2 = "dogs"

s3 = " %s and %s living together" % (s1, s2)

没有足够的参数

使用老的格式化方法,我经常犯错"TypeError: not enough arguments for formating

string",因为我数错了替换变量的数量,编写如下这样的代码很容易漏掉变量。set = "(%s, %s, %s, %s, %s, %s, %s, %s) " % ('a','b','c','d','e','f','g','h')

对于新的Python格式字符串,可以使用编号的参数,这样你就不需要统计有多少个参数。set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) ".format('a','b','c','d','e','f','g','h')

四、更多.format()的格式字符串方法

format()函数提供了相当多的附加特性和功能,如下是一些有用的使用.format()的技巧。

命名参数

你可以将新的格式字符串用作模板引擎,使用命名参数,这样就不要求有严格的顺序。madlib = " I {verb} the {object} off the {place} ".format(verb="took", object="cheese", place="table")

>>> I took the cheese off the table

多次复用同一个变量

使用%格式字符串,要求变量有严格的次序,而.format()方法允许如上所示那样任意排列参数,也允许复用。str = "Oh {0}, {0}! wherefore art thou {0}?".format("Romeo")

>>> Oh Romeo, Romeo! wherefore art thou Romeo?

将数值转换为不同的进制

可以使用如下字母来将数字转换成字母代表的进制,decimal,hex,octal, binary。print("{0:d} - {0:x} - {0:o} - {0:b} ".format(21))

>>> 21 - 15 - 25 -10101

将格式作为函数来使用

可以将.format()用作函数,这就允许在代码中将普通文本和格式区分开来。例如,你可以在程序的开头包含所有需要使用的格式,然后在后面使用。这也是一种处理国际化的好方法,国际化不仅要求不同的文本,且常常要求不同的数字格式。

## 定义格式 email_f = "Your email address was {email}".format

### 在另一个地方使用 print(email_f(email="bob@example.com"))

感谢 earthboundkid在reddit上提供这一技巧。

五、其他技巧

转义大括号

使用str.format()时,若你需要使用大括号,只要写两次就可以了:

print(" The {} set is often represented as { {0} } ".format("empty"))

>>> The empty set is often represented as {0}

六、参考资料

python数据的格式输出_python相关推荐

  1. python数据的格式输出_Python格式化输出

    "%"的使用 格式符 描述 %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符及其ASCII码 %u 整数(无符号) %b 二进制整数 ...

  2. python数据的格式输出_python数据类型,格式话输出

    一.程序交互 name = input("你的名字是:") #用户输入,输入的任何东西都存储成str(字符串类型)的形式 二.注释的重要性 以后动辄几千行代码的时候,回过头再去看的 ...

  3. python的json格式输出_python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  4. python中的format什么意思中文-Python中format()格式输出全解

    格式化输出:format() format():把传统的%替换为{}来实现格式化输出 1.使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串, ...

  5. 成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内daiding

    成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内 目录 解决问题 解决方法 解决问题 将python的列表格式(如pandas ...

  6. python 把数据 json格式输出

    有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import jsondate = {u'versions': [{u' ...

  7. python文件写入字典格式输出_Python把对应格式的csv文件转换成字典类型存储脚本的方法...

    该脚本是为了结合之前的编写的脚本,来实现数据的比对模块,实现数据的自动化!由于数据格式是定死的,该代码只做参考,有什么问题可以私信我! CSV的数据格式截图如下: readDataToDic.py源代 ...

  8. python数据存储用什么_Python的小数据存储,用什么格式更有逼格?

    小数据存储 我们在编写代码的时候,经常会涉及到数据存储的情况,如果是爬虫得到的大数据,我们会选择使用数据库,或者excel存储.但如果只是一些小数据,或者说关联性较强且存在存储后复用的数据,我们该如何 ...

  9. python以垂直方式输出_python学习笔记

    Author: maddock Date: 2015-03-15 21:42:01 (暂时没有整理) python json文件处理 #coding:utf-8 importjson#data = [ ...

最新文章

  1. 【python之旅】python的基础二
  2. 二叉树-二叉树的最大深度(递归 )
  3. 添加本地图层出现要求cross domain policy的错误
  4. window.opener
  5. PowerDesigner 缺省值 引号 问题
  6. python获取一个月之前日期_利用python获取当前日期前后N天或N月日期的方法示例...
  7. 大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
  8. 时间 ,空间 ,物质
  9. 离散数学11:图的着色
  10. Drools 规则引擎的使用
  11. Python正则表达式(附语法详解)
  12. C++ 多线程(一)入门
  13. c语言中next如何用,C++ STL prev()和next()函数用法详解
  14. 利用Python进行粗糙的视频字幕识别
  15. 手把手Verilog HDL同步Vaild-Ready握手FIFO机制
  16. 关于python的文献综述_关于毕业论文文献综述,史上最全总结.doc
  17. 11-17今日分享SINGSALE使用虚拟卡支付教程
  18. 新手小白学影视剪辑50天日入500,她的方法秘籍全在这里了!【覃小龙课堂】
  19. 权值初始化 - Xavier和MSRA方法
  20. 树莓派4B安装Openwrt软路由并用作家庭网络网关设备

热门文章

  1. EntityFramework的安装
  2. ASP.NET MVC 5 入门教程 (3) 路由route
  3. 基于混合云存储系统的电影推荐引擎小结
  4. 用excel打开文本内容
  5. 索引原理及项目中如何使用索引实例分析
  6. vscode标记_高效扩展工具让 VS Code 如虎添翼
  7. matlab 矩阵jocobi迭代_第6章 解线性方程组的迭代法(基于MATLAB)
  8. python二级简书_12月4日,总结发现杯,备战python二级
  9. 02-Flutter移动电商实战-建立项目和编写入口文件
  10. android 屏幕横竖屏切换时生命周期运行详解,创建横屏layout,has no declaration in the base