随笔 - 142  文章 - 0  评论 - 0

python基础_格式化输出(%用法和format用法)

 

目录

%用法

format用法

%用法

1、整数的输出

%o —— oct 八进制
%d —— dec 十进制
%x —— hex 十六进制

  1. 1 >>> print('%o' % 20)
  2. 2 24
  3. 3 >>> print('%d' % 20)
  4. 4 20
  5. 5 >>> print('%x' % 20)
  6. 6 14

2、浮点数输出

(1)格式化输出

%f ——保留小数点后面六位有效数字
  %.3f,保留3位小数位
%e ——保留小数点后面六位有效数字,指数形式输出
  %.3e,保留3位小数位,使用科学计数法
%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
  %.3g,保留3位有效数字,使用小数或科学计数法

  1. 1 >>> print('%f' % 1.11) # 默认保留6位小数
  2. 2 1.110000
  3. 3 >>> print('%.1f' % 1.11) # 取1位小数
  4. 4 1.1
  5. 5 >>> print('%e' % 1.11) # 默认6位小数,用科学计数法
  6. 6 1.110000e+00
  7. 7 >>> print('%.3e' % 1.11) # 取3位小数,用科学计数法
  8. 8 1.110e+00
  9. 9 >>> print('%g' % 1111.1111) # 默认6位有效数字
  10. 10 1111.11
  11. 11 >>> print('%.7g' % 1111.1111) # 取7位有效数字
  12. 12 1111.111
  13. 13 >>> print('%.2g' % 1111.1111) # 取2位有效数字,自动转换为科学计数法
  14. 14 1.1e+03

(2)内置round()

round(number[, ndigits])
参数:
number - 这是一个数字表达式。
ndigits - 表示从小数点到最后四舍五入的位数。默认值为0。
返回值
该方法返回x的小数点舍入为n位数后的值。

round()函数只有一个参数,不指定位数的时候,返回一个整数,而且是最靠近的整数,类似于四舍五入,当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的情况时,如果要取舍的位数前的小数是奇数,则直接舍弃,如果是偶数则向上取舍。

注:“.5”这个是一个“坑”,且python2和python3出来的接口有时候是不一样的,尽量避免使用round()函数吧

  1. 1 >>> round(1.1125) # 四舍五入,不指定位数,取整
  2. 2 1
  3. 3 >>> round(1.1135,3) # 取3位小数,由于3为奇数,则向下“舍”
  4. 4 1.113
  5. 5 >>> round(1.1125,3) # 取3位小数,由于2为偶数,则向上“入”
  6. 6 1.113
  7. 7 >>> round(1.5) # 无法理解,查阅一些资料是说python会对数据进行截断,没有深究
  8. 8 2
  9. 9 >>> round(2.5) # 无法理解
  10. 10 2
  11. 11 >>> round(1.675,2) # 无法理解
  12. 12 1.68
  13. 13 >>> round(2.675,2) # 无法理解
  14. 14 2.67
  15. 15 >>>

3、字符串输出

%s
%10s——右对齐,占位符10位
%-10s——左对齐,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取两位字符串

  1. 1 >>> print('%s' % 'hello world') # 字符串输出
  2. 2 hello world
  3. 3 >>> print('%20s' % 'hello world') # 右对齐,取20位,不够则补位
  4. 4 hello world
  5. 5 >>> print('%-20s' % 'hello world') # 左对齐,取20位,不够则补位
  6. 6 hello world
  7. 7 >>> print('%.2s' % 'hello world') # 取2位
  8. 8 he
  9. 9 >>> print('%10.2s' % 'hello world') # 右对齐,取2位
  10. 10 he
  11. 11 >>> print('%-10.2s' % 'hello world') # 左对齐,取2位
  12. 12 he

4、 其他

(1)字符串格式代码

(2)常用转义字符

format用法

相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’

位置匹配

  (1)不带编号,即“{}”

  (2)带数字编号,可调换顺序,即“{1}”、“{2}”

  (3)带关键字,即“{a}”、“{tom}”

  1. 1 >>> print('{} {}'.format('hello','world')) # 不带字段
  2. 2 hello world
  3. 3 >>> print('{0} {1}'.format('hello','world')) # 带数字编号
  4. 4 hello world
  5. 5 >>> print('{0} {1} {0}'.format('hello','world')) # 打乱顺序
  6. 6 hello world hello
  7. 7 >>> print('{1} {1} {0}'.format('hello','world'))
  8. 8 world world hello
  9. 9 >>> print('{a} {tom} {a}'.format(tom='hello',a='world')) # 带关键字
  10. 10 world hello world
  1. >>> '{0}, {1}, {2}'.format('a', 'b', 'c')
  2. 'a, b, c'
  3. >>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+版本支持
  4. 'a, b, c'
  5. >>> '{2}, {1}, {0}'.format('a', 'b', 'c')
  6. 'c, b, a'
  7. >>> '{2}, {1}, {0}'.format(*'abc') # 可打乱顺序
  8. 'c, b, a'
  9. >>> '{0}{1}{0}'.format('abra', 'cad') # 可重复
  10. 'abracadabra'
  1. >>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
  2. 'Coordinates: 37.24N, -115.81W'
  3. >>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
  4. >>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
  5. 'Coordinates: 37.24N, -115.81W'
  1. >>> c = 3-5j
  2. >>> ('The complex number {0} is formed from the real part {0.real} '
  3. ... 'and the imaginary part {0.imag}.').format(c)
  4. 'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
  5. >>> class Point:
  6. ... def __init__(self, x, y):
  7. ... self.x, self.y = x, y
  8. ... def __str__(self):
  9. ... return 'Point({self.x}, {self.y})'.format(self=self)
  10. ...
  11. >>> str(Point(4, 2))
  12. 'Point(4, 2)'
  1. >>>
  2. >>> coord = (3, 5)
  3. >>> 'X: {0[0]}; Y: {0[1]}'.format(coord)
  4. 'X: 3; Y: 5'
  5. >>> a = {'a': 'test_a', 'b': 'test_b'}
  6. >>> 'X: {0[a]}; Y: {0[b]}'.format(a)
  7. 'X: test_a; Y: test_b'

格式转换

'b' - 二进制。将数字以2为基数进行输出。
'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。
'd' - 十进制整数。将数字以10为基数进行输出。
'o' - 八进制。将数字以8为基数进行输出。
'x' - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。
'g' - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
'n' - 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。
'%' - 百分数。将数值乘以100然后以fixed-point('f')格式打印,值后面会有一个百分号。
  1. 1 >>> print('{0:b}'.format(3))
  2. 2 11
  3. 3 >>> print('{:c}'.format(20))
  4. 4
  5. 5 >>> print('{:d}'.format(20))
  6. 6 20
  7. 7 >>> print('{:o}'.format(20))
  8. 8 24
  9. 9 >>> print('{:x}'.format(20))
  10. 10 14
  11. 11 >>> print('{:e}'.format(20))
  12. 12 2.000000e+01
  13. 13 >>> print('{:g}'.format(20.1))
  14. 14 20.1
  15. 15 >>> print('{:f}'.format(20))
  16. 16 20.000000
  17. 17 >>> print('{:n}'.format(20))
  18. 18 20
  19. 19 >>> print('{:%}'.format(20))
  20. 20 2000.000000%
  21. 21 >>>

进阶用法

进制转换

  1. >>> # format also supports binary numbers
  2. >>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
  3. 'int: 42; hex: 2a; oct: 52; bin: 101010'
  4. >>> # with 0x, 0o, or 0b as prefix:
  5. >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) # 在前面加“#”,则带进制前缀
  6. 'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'

左中右对齐及位数补全

(1)< (默认)左对齐、> 右对齐、^ 中间对齐、= (只用于数字)在小数点后进行补齐

(2)取位数“{:4s}”、"{:.2f}"等

  1. >>> print('{} and {}'.format('hello','world')) # 默认左对齐
  2. hello and world
  3. >>> print('{:10s} and {:>10s}'.format('hello','world')) # 取10位左对齐,取10位右对齐
  4. hello and world
  5. >>> print('{:^10s} and {:^10s}'.format('hello','world')) # 取10位中间对齐
  6. hello and world
  7. >>> print('{} is {:.2f}'.format(1.123,1.123)) # 取2位小数
  8. 1.123 is 1.12
  9. >>> print('{0} is {0:>10.2f}'.format(1.123)) # 取2位小数,右对齐,取10位
  10. 1.123 is 1.12
  11.  
  12. >>> '{:<30}'.format('left aligned') # 左对齐
  13. 'left aligned '
  14. >>> '{:>30}'.format('right aligned') # 右对齐
  15. ' right aligned'
  16. >>> '{:^30}'.format('centered') # 中间对齐
  17. ' centered '
  18. >>> '{:*^30}'.format('centered') # 使用“*”填充
  19. '***********centered***********'
  20. >>>'{:0=30}'.format(11) # 还有“=”只能应用于数字,这种方法可用“>”代替
  21. '000000000000000000000000000011'
  1. print(format('test', '<20'))
  2. print(format('test', '>40'))
  3. print(format('test', '^40'))

正负符号显示

  1. >>> '{:+f}; {:+f}'.format(3.14, -3.14) # 总是显示符号
  2. '+3.140000; -3.140000'
  3. >>> '{: f}; {: f}'.format(3.14, -3.14) # 若是+数,则在前面留空格
  4. ' 3.140000; -3.140000'
  5. >>> '{:-f}; {:-f}'.format(3.14, -3.14) # -数时显示-,与'{:f}; {:f}'一致
  6. '3.140000; -3.140000'

百分数%

  1. >>> points = 19
  2. >>> total = 22
  3. >>> 'Correct answers: {:.2%}'.format(points/total)
  4. 'Correct answers: 86.36%'

时间

  1. >>> import datetime
  2. >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
  3. >>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
  4. '2010-07-04 12:15:58'

逗号","分隔金钱,没以前进位

  1. >>> '{:,}'.format(1234567890)
  2. '1,234,567,890'

占位符嵌套

  1. >>> for align, text in zip('<^>', ['left', 'center', 'right']):
  2. ... '{0:{fill}{align}16}'.format(text, fill=align, align=align)
  3. ...
  4. 'left<<<<<<<<<<<<'
  5. '^^^^^center^^^^^'
  6. '>>>>>>>>>>>right'
  7. >>>
  8. >>> octets = [192, 168, 0, 1]
  9. >>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
  10. 'C0A80001'
  11. >>> int(_, 16) # 官方文档给出来的,无法在IDLE复现
  12. 3232235521
  13. >>>
  14. >>> width = 5
  15. >>> for num in range(5,12):
  16. ... for base in 'dXob':
  17. ... print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
  18. ... print()
  19. ...
  20. 5 5 5 101
  21. 6 6 6 110
  22. 7 7 7 111
  23. 8 8 10 1000
  24. 9 9 11 1001
  25. 10 A 12 1010
  26. 11 B 13 1011

占位符%s和%r

  1. """
  2. replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
  3. conversion ::= "r" | "s" | "a"
  4. 这里只有三个转换符号,用"!"开头。
  5. "!r"对应 repr();"!s"对应 str(); "!a"对应ascii()。
  6. """
  7.  
  8. >>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
  9. "repr() shows quotes: 'test1'; str() doesn't: test2" # 输出结果是一个带引号,一个不带

format的用法变形

  1. # a.format(b)
  2. >>> "{0} {1}".format("hello","world")
  3. 'hello world'
  4.  
  5. # f"xxxx"
    # 可在字符串前加f以达到格式化的目的,在{}里加入对象,此为format的另一种形式:
  6. >>> a = "hello"
  7. >>> b = "world"
  8. >>> f"{a} {b}"
  9. 'hello world'
  10.  
  11. name = 'jack'
  12. age = 18
  13. sex = 'man'
  14. job = "IT"
  15. salary = 9999.99
  16.  
  17. print(f'my name is {name.capitalize()}.')
  18. print(f'I am {age:*^10} years old.')
  19. print(f'I am a {sex}')
  20. print(f'My salary is {salary:10.3f}')
  21.  
  22. # 结果
  23. my name is Jack.
  24. I am ****18**** years old.
  25. I am a man
  26. My salary is 9999.990

参考or转发

官方资料

Python_%---format_43的更多相关文章

  1. 1.Python_字符串_常用办法总结

    明确:对字符串的操作方法都不会改变原来字符串的值. 1.去掉空格和特殊符号 name.strip() 去掉空格和换行符 name.strip("xx") 去掉某个字符串 name. ...

  2. python_继承.ziw

    2017年1月2日, 星期一 python_继承   null

  3. python_封装redis_list方法

    xshell 进入 虚拟环境 安装 redis workon py3env # 进入虚拟环境 pip install redis # 安装redis deactivate # 退出虚拟环境 简单的封装 ...

  4. python_封装redis_hash方法

    xshell 进入 虚拟环境 安装 redis workon py3env # 进入虚拟环境 pip install redis # 安装redis deactivate # 退出虚拟环境 简单的封装 ...

  5. Python_元组、字典内建方法详解

    目录 目录 前言 软件环境 元组Tuple count 查询一个元素在Tuple中的数量 index 查询元素在Tuple中的索引号 元组的遍历 字典Dictionary 创建一个字典对象 简单的创建 ...

  6. Python_网络编程_socket()

    什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 详细资 ...

  7. Python_爬虫笔记_2018.3.19

    Python_爬虫_笔记 1.前言 1.1爬虫用途: 网站采集.接口采集(地图(jis 热力学 屋里端口/协议).微信.知乎.) 1.2基本流程:网页下载(requests)+网页解析+爬虫调度 网页 ...

  8. python_单元测试unittest

    Python自带一个单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 步骤1:首先引入unittest模块--import un ...

  9. python_接口开发

    一.GET和POST请求from flask import Flask,jsonifydata = { 'name':'Jerry', 'sex':'男', 'age':'18'}app = Flas ...

随机推荐

  1. spring4笔记----web.xml中2.4以上版本Listener的配置

    基本上没用过Servlet2.4以下版本,所以2.4版本以下不必学了 <?xml version="1.0" encoding="UTF-8"?> ...

  2. 以太坊之——golang以太坊接口调用

    Go语言具有简单易学.功能强大,可跨平台编译等众多优势,所以这里选择以Go语言切入以太坊. 开始之前需要以下环境: Ubuntu(这里以ubuntu16.04为例) geth Ubuntu16.04安 ...

  3. 个人对于 Maven 的理解

    个人对于 Maven 的理解 Maven 一直都在使用, 但如果说是不是真的懂 Maven, 很难谈得上. 或许什么时候系统地学习一下, 但在那之前, 打算先记下自己目前对于 Maven 的理解, 之 ...

  4. Microsoft .NET Framework 3.5 离线安装方法 (仅适用于Win8以上的系统)

    所需工具:本系统对应原版镜像或Win8以上操作系统原版ISO镜像 操作: 1.利用Windows资源管理器挂载 ISO 镜像,或其他虚拟光驱工具挂载镜像,记住挂载的盘符 2.打开Windows命令提示 ...

  5. ELK-logstash-6.3.2-常用配置

    1. input-file收集日志信息 [yun@mini04 config]$ pwd /app/logstash/config [yun@mini04 config]$ cat file.conf ...

  6. ubuntu 打开eclipse出现A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be ... 解决方法(转载)

    原创作者:http://www.cnblogs.com/jerome-rong/archive/2013/02/19/2916608.html Java RunTime Environment (JR ...

  7. June 6. 2018 Week 23rd Wednesday

    You are confined only by the walls you build yourself. 限制你的只有你自己筑起的墙. From Andrew Murphy. Let's repe ...

  8. j旧学习

    多态的动态绑定: 签名 方法名和参数列表  不同参数叫重载,覆盖父类签名叫覆盖 类加 final不可继承 方法加final不可覆盖 强制类型转换  (类型)对象 抽象类 只要有一个抽象方法就是抽象类, ...

  9. JSX格式化代码,你值得拥有!

    ext install prettier-vscode https://segmentfault.com/q/1010000014822745

  10. WIN10中DOCKER的安装

    1.docker的安装 环境准备 Docker for Windows是一个Docker Community Edition(CE)应用程序.Docker for Windows安装包包含了在Wind ...