《Python Cookbook 3rd》笔记(3.3):数字的格式化输出
数字的格式化输出
问题
你需要将数字格式化后输出,并控制数字的位数、对齐、千位分隔符和其他的细节。
解法
格式化输出单个数字的时候,可以使用内置的 format() 函数,比如:
>>> x = 1234.56789
>>> # Two decimal places of accuracy
>>> format(x, '0.2f')
'1234.57'
>>> # Right justified in 10 chars, one-digit accuracy
>>> format(x, '>10.1f')
' 1234.6'
>>> # Left justified
>>> format(x, '<10.1f')
'1234.6 '
>>> # Centered
>>> format(x, '^10.1f')
' 1234.6 '
>>> # Inclusion of thousands separator
>>> format(x, ',')
'1,234.56789'
>>> format(x, '0,.1f')
'1,234.6'
>>>
如果你想使用指数记法,将 f 改成 e 或者 E(取决于指数输出的大小写形式)。比如:
>>> format(x, 'e')
'1.234568e+03'
>>> format(x, '0.2E')
'1.23E+03'
>>>
同时指定宽度和精度的一般形式是 ‘[<>ˆ]?width[,]?(.digits)?’ ,其中 width和 digits 为整数,?代表可选部分。同样的格式也被用在字符串的 format() 方法中。比如:
>>> 'The value is {:0,.2f}'.format(x)
'The value is 1,234.57'
>>>
讨论
数字格式化输出通常是比较简单的。上面演示的技术同时适用于浮点数和 decimal 模块中的 Decimal 数字对象。
当指定数字的位数后,结果值会根据 round() 函数同样的规则进行四舍五入后返回。比如:
>>> x
1234.56789
>>> format(x, '0.1f')
'1234.6'
>>> format(-x, '0.1f')
'-1234.6'
>>>
包含千位符的格式化跟本地化没有关系。如果你需要根据地区来显示千位符,你需要自己去调查下 locale 模块中的函数了。你同样也可以使用字符串的 translate()方法来交换千位符。比如:
>>> swap_separators = { ord('.'):',', ord(','):'.' }
>>> format(x, ',').translate(swap_separators)
'1.234,56789'
>>>
在很多 Python 代码中会看到使用 % 来格式化数字的,比如:
>>> '%0.2f' % x
'1234.57'
>>> '%10.1f' % x
' 1234.6'
>>> '%-10.1f' % x
'1234.6 '
>>>
这种格式化方法也是可行的,不过比更加先进的 format() 要差一点。比如,在使用 % 操作符格式化数字的时候,一些特性 (添加千位符adding thousands separators) 并不能被支持。
《Python Cookbook 3rd》笔记(3.3):数字的格式化输出相关推荐
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- oracle中如何格式化输出,【学习笔记】数据库日期时间格式化输出案例
天萃荷净 分享一篇关于开发DBA在工作中常用到的日期时间格式化输出方法案例,含:mysql.sql server.oracle 3种数据库日期时间格式化输出 1.mysql数据库时间格式化输出 DAT ...
- 《Python Cookbook 3rd》笔记(3.1):数字的四舍五入
数字的四舍五入 问题 你想对浮点数执行指定精度的舍入运算. 解法 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可.比如: >>> round(1 ...
最新文章
- 项目中常用的git指令
- nyoj 720 项目安排(dp+二分优化)
- HYSBZ 1588 营业额统计 平衡二叉树模板
- centos6.4 源码安装mysql5.5
- 数据结构思维 翻译完成
- 用GA算法设计22个地点之间最短旅程-R语言实现
- hdoj 4940 强连通图
- 字符匹配算法之KMP
- 网络安全等级测评师培训(初级)----2021.6.6
- 怀念《100部经典动漫大回顾》 你还记得几部?(附图)
- linux需要安装杀病毒软件,我在Linux上需要安装反病毒软件吗?
- std::packaged_task 源码分析
- Dual Illumination Estimation for Robust Exposure Correction阅读札记
- .nte连接数据库常见问题,Unknown column '张三' in 'where clause'
- Chrome HackBar工具下载
- android盒子远程,电视盒子ADB教程 通过ADB远程安装应用方法
- 云原生|斯人若彩虹,遇到方知有【Python代码实现】
- 通过形状先验引导的3D目标检测方法(Disp R-CNN解读)
- DBMS_REPAIR
- 利用云服务器部署论坛网站系统discuz
热门文章
- char * 转LPCTSTR若干方法
- python复制文件的代码_python 复制文件流程
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1
- 01-单一职责原则(SPR)
- 让TFS忽略packages文件夹的更改
- Java中Lambda表达式与方法引用和构造器引用
- 【转】TFS上分支和标签的用法
- layui templet格式化_layui数据表格日期如何格式化成2012-12-30这样的?
- iar stm32_树莓派玩转STM32开发(一)——介绍篇
- 【Python CheckiO 题解】Remove Accents