Python中,我们在预定义某类具有相似格式的变量或者输出一句含有多个变量的提示语句时,往往用到占位符,而占位符有两种表达方式:

%方式:

下面这段代码摘自matplotlib的_init_.py文件中class RcParams的定义:

msg_depr = "%s is deprecated and replaced with %s; please use the latter."msg_depr_set = ("%s is deprecated. Please remove it from your ""matplotlibrc and/or style files.")msg_depr_ignore = "%s is deprecated and ignored. Use %s instead."msg_obsolete = ("%s is obsolete. Please remove it from your matplotlibrc ""and/or style files.")msg_backend_obsolete = ("The {} rcParam was deprecated in version 2.2.  In"" order to force the use of a specific Qt binding,"" either import that binding first, or set the ""QT_API environment variable.")

其中,%s表示此展位符可用相关字符串代替,这是一个比较简单的实例,%方式的占位符具体格式为:

 %[(name)][flags][width].[precision]typecode
  • (name) 可选,用于选择指定的key

  • flags 可选,可供选择的值有:
    + 右对齐;正数前加正好,负数前加负号;
    - 左对齐;正数前无符号,负数前加负号;
    空格 右对齐;正数前加空格,负数前加负号;
    0 右对齐;正数前无符号,负数前加负号;用0填充空白处

  • width 可选,占有宽度

  • .precision 可选,小数点后保留的位数

  • typecode 必选
    s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
    r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
    c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
    o,将整数转换成 八 进制表示,并将其格式化到指定位置
    x,将整数转换成十六进制表示,并将其格式化到指定位置
    d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
    e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
    E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
    f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
    F,同上
    g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
    G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
    %,当字符串中存在格式化标志时,需要用 %%表示一个百分号

注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

tpl = "i am %s" % "alex" print(tpl)
tpl = "i am %s age %d" % ("alex", 18) print(tpl)
tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18} print(tpl)
tpl = "percent %.2f" % 99.97623 print(tpl)
tpl = "i am %(pp).2f" % {"pp": 123.425556, } print(tpl)
tpl = "i am %(pp).2f %%" % {"pp": 123.425556, } print(tpl)
i am alex
i am alex age 18
i am alex age 18
percent 99.98
i am 123.43
i am 123.43 %

format方式:

以下是同时输出字典roll_dict的key-value对的format表达方式:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
total_times = 1000
roll_dict={"1":56, "2":65, "3":458, "4":25}
for i, result in roll_dict.items():print('点数是{}的次数是:{},频率是:{}' .format(i, result, result/total_times))点数是1的次数是:56,频率是:0.056
点数是2的次数是:65,频率是:0.065
点数是3的次数是:458,频率是:0.458
点数是4的次数是:25,频率是:0.025

如上述例子所示:forma占位需要结合{}使用,{}中可以带入相关变量的相关参数,上述例子中{}是空白,未指定类型,则默认是None,表示实际变量i,result,result/total_times依次取代前面三个{}。

format的{}格式具体如下:

[[fill]align][sign][#][0][width][,][.precision][type]
  • fill 【可选】空白处填充的字符

  • align 【可选】对齐方式(需配合width使用)

  • <,内容左对齐

  • >,内容右对齐(默认)

  • ,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字

  • ^,内容居中

  • sign 【可选】有无符号数字
    +,正号加正,负号加负;
    -,正号不变,负号加负;
    空格 ,正号空格,负号加负;

  • # 【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

  • 【可选】为数字添加分隔符,如:1,000,000

  • width 【可选】格式化位所占宽度

  • .precision 【可选】小数位保留精度

  • type 【可选】格式化类型

传入” 字符串类型 “的参数

  • s,格式化字符串类型数据
  • 空白,未指定类型,则默认是None,同s

传入“ 整数类型 ”的参数

  • b,将10进制整数自动转换成2进制表示然后格式化
  • c,将10进制整数自动转换为其对应的unicode字符
  • d,十进制整数
  • o,将10进制整数自动转换成8进制表示然后格式化;
  • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
  • X,将10进制整数自动转换成16进制表示然后格式化(大写X)

传入“ 浮点型或小数类型 ”的参数

  • e, 转换为科学计数法(小写e)表示,然后格式化;
  • E, 转换为科学计数法(大写E)表示,然后格式化;
  • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
  • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
  • g, 自动在e和f中切换
  • G, 自动在E和F中切换
  • %,显示百分比(默认显示小数点后6位)
tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
print(tpl)tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
print(tpl)tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
print(tpl)tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
print(tpl)tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
print(tpl)tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
print(tpl)tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
print(tpl)tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
print(tpl)tpl = "i am {:s}, age {:d}".format(*["seven", 18])
print(tpl)tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)
print(tpl)tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
print(tpl)tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
print(tpl)tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
print(tpl)tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
print(tpl)tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
print(tpl)i am seven, age 18, alexi am seven, age 18, alexi am seven, age 18, really seveni am seven, age 18, really seveni am seven, age 18, really seveni am seven, age 18, really seveni am 1, age 2, really 3i am seven, age 18, money 88888.100000i am seven, age 18i am seven, age 18i am seven, age 18numbers: 1111,17,15,f,F, 1587.623000%numbers: 1111,17,15,f,F, 1587.623000%numbers: 1111,17,15,f,F, 1500.000000%numbers: 1111,17,15,f,F, 1500.000000%

从上述例子中 可以看出{}在语句中出现的位置依次与format中变量出现的位置从左到右依次对应,但如果{}中有整型数据,则整型数据值表示format中元素的索引位置:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])print(tpl)

输出为:

i am 1, age 2, really 3

如果改成:

 tpl = "i am {0}, age {1[1]}, really {1[2]}".format([1, 2, 3], [11, 22, 33])print(tpl)

则输出为:

i am [1, 2, 3], age 22, really 33

此种方式更显灵活。

Python占位符总结:%方式和format方式相关推荐

  1. python 占位符_Python占位符总结:%方式和format方式

    Python中,我们在预定义某类具有相似格式的变量或者输出一句含有多个变量的提示语句时,往往用到占位符,而占位符有两种表达方式: %方式: 下面这段代码摘自matplotlib的_init_.py文件 ...

  2. Python 占位符格式化详解

    Python 占位符格式化详解 占位符,顾名思义就是插在输出里站位的符号.占位符是绝大部分编程语言都存在的语法, 而且大部分都是相通的, 它是一种非常常用的字符串格式化的方式. 原文:https:// ...

  3. python3占位符详解_占位符最新:Python 占位符的使用方法详解_爱安网 LoveAn.com

    关于"占位符"的最新内容 聚合阅读 这篇文章主要介绍了Python 占位符的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...

  4. python占位符补数据_Python 占位符格式化的简单示例

    这篇文章主要为大家详细介绍了Python 占位符格式化的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 占位符 ...

  5. python占位符怎么使用

    Python占位符的使用非常简单,只需要在要使用占位符的地方使用一个占位符标记,比如"%s",然后在后面提供要插入的参数即可.例如,要将一个字符串插入另一个字符串,可以使用:&qu ...

  6. python 占位符(百分号方式、Format 方式)

    原文地址: http://www.cnblogs.com/cp-miao/p/5582766.html 1.百分号方式 %[(name)][flags][width].[precision]typec ...

  7. python 占位符(%d)和 format

    占位符% 占位符%d使用: 使用百分号%隔开,后面多个用小括号. print ('%d 等于 %d * %d' %(num,i,j)) '%d'相当于占位的格式 %6d 整数输出,宽度是6位,不足左边 ...

  8. Python占位符以及字符串常用函数

    1.占位符 占位符是python程序中,经常会用到的一种占位方式.其作用是替后面的变量值占一个位置 1.1 占位符的表示方式 1.1.1 内容显示的类型不同,占位符也不同 分类: %d %i      ...

  9. python占位符_Python(2)——Python的基础语句

    关注微信公众号IT小组,获取更多干货知识~ 目录: 赋值 输入输出语句 格式化输出 循环语句 条件判断语句 一:赋值 在编程语言中,给一个变量赋值是最常见的事情,赋值语句在Python中是以" ...

最新文章

  1. 用 Ubuntu 重置 Windows 密码
  2. 图像处理算法打包成dll
  3. pb mysql odbc_PB 连接Mysql ODBC/JDBC
  4. MED-V服务器的部署与配置
  5. 白话设计模式——Abstract Factory
  6. java5新特性静态引用、foreach、自动装箱和泛型枚举以及可变参数的总结
  7. Python计算校验文件的MD5、SHA1、SHA256和CRC32,获取文件创建日期、修改日期和文件大小
  8. Arcgis for android 100.4 getFieldType ()
  9. 第二章 ELKstack部署及配置
  10. python学习中包的生成和调用(idle和pycharm)
  11. 设计模式系列--Singleton
  12. PC管理端及评委手机打分端的浏览器兼容问题
  13. 南京市儿童医院用医保身份(医保通道)网上预约挂号以及取号、付费看病流程
  14. 《开学第一课》观后感——幸福
  15. Windows编程 Windows程序的生与死(下)
  16. OSChina 周四乱弹 —— 下班等通知,我张北华同意后才下班
  17. ubuntu命令行登陆校园网
  18. 【编译原理】实验四:Yacc 分析程序生成器
  19. sl410k安装debian7.0无线网卡问题解决
  20. 计算机怎么设置内存数据恢复,电脑内存不足如何清理?误删除文件怎么恢复?...

热门文章

  1. 如何解决秒杀的性能问题和超卖的讨论 及防止按钮多次点击
  2. Nexus学习笔记 -- 安装到运行
  3. 关于大数据的那些事儿
  4. 电脑硬件故障的几种简单检查方法
  5. php 获取class id,CSS Class 與 CSS ID
  6. oracle利用触发器实现自增列
  7. ERP兵法——从案例透视方法(实施篇上)
  8. GS01创建信息集及其他GROUP在ABAP程序中的调用方法
  9. 无法创建 set/get 参数(参数 ID)
  10. 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题