一、    概念

        格式化字符串就是将一些变量转换为字符串并按一定格式输出字符串,包括指定字符的位置、对齐方式、空位补充方式等。Python提供了多种字符串格式设置方法。本节先介绍一种简单的方法。

        格式化字符串时,指定字符串格式化输出格式的字符串称为“格式字符串”。在使用字符串格式化方法时,在格式字符串内使用特定符号及其后面的格式及类型指定的串称为“格式符”或“转换说明符”,格式符的标记符号称为“占位符”,格式符对应的真实输出数据称为“真实值”。在使用百分号%的字符串格式化方法时,百分号就是占位符,占位符及其后面的格式及类型指定的串就是“格式符”。

       格式化字符串时,可以将格式字符串与真实值分开存放,输出时再拼接。

二、使用百分号的字符串格式化方法

该方式类似C语言中的经典函数printf,在函数左边输出格式部分用百分号%开头的格式符指定在哪个地方输出一个什么类型的变量,并可以指定输出的格式。同时在字符串右边引号的后面紧跟占位符百分号,后接真实值。真实值可以通过单个数值、元组或字典方式输入:

1.    如果只有一个真实值,则直接在百分号后面接变量或值,也可以将该真实值存放到单个元素的元组内作为元组输入;

2.    如果有多个真实值,可以通过将这些真实值放在一个元组内,原则内的每个元素就是一个真实值,占位符对应数据与元组内的元组逐一对应;

3.    如果输出数据存放在一个字典内,则在格式符中需要包含键名,并将字典作为真实值的容器输入。

格式符的语法:%[(name)][flags][width].[precision]typecode。

  1. (name)参数:当使用字典作为真实值的存放容器,name在此对应输出值关联的字典的键名,必须使用小括号将键名括起来,如果字典中不存在该键,则引发异常,否则输出该键对应的值;
  2. flags可以有+,-,' '或0。+表示应该包含数字的正负号。-表示左对齐,没有表示右对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充;
  3. width表示该输出值占用的宽度;
  4. precision表示小数点后精度;
  5. typecode表示输出值的类型,具体含义如下:
    • %s             字符串 (采用str()的显示)
    • %r             字符串 (采用repr()的显示)
    • %c             单个字符
    • %b             二进制整数
    • %d,%i          十进制整数
    • %o             八进制整数
    • %x,%X          十六进制整数
    • %e,%E          指数
    • %f,%F           浮点数
    • %g,%G          指数或浮点数 (根据显示长度)
    • %u             无符号数(没有细查文档,经测试可以输出负数)
    • %%             字符"%"

三、举例

需要输出一个学生的信息包括姓名、班级和总分数,用上面介绍的几种方式分别实现如下:

假设:学生信息存放在一个字典数据中,格式如下:

student={'name':'小明','class':20190301,'score':597.5}

1.    输出学生姓名,右对齐,直接使用真实值

       print('%4s同学'%student['name'])

2.    左对齐,名字占用4个长度,班级10个长度,分数7个长度的浮点数,真实值使用元组存储

       print('%10s班 %-4s同学,总分:%7.2f'%(student['class'],student['name'],student['score']))

3.    #右对齐其他格式与上例同,只是格式化字符串和真实值存放在变量中,输出时格式化处理

       format='%10s班 %-4s同学,总分:%7.2f'

       value=(student['class'],student['name'],student['score'])

       print(format%value)

4.    右对齐其他格式与上例同,只是格式化字符串和真实值存放在变量中,将格式化处理结果存放到变量再输出

       format='%10s班 %-4s同学,总分:%7.2f'

       value=(student['class'],student['name'],student['score'])

       output=format%value

       print(output)

5.    使用字典存放真实值,直接格式化输出

       print('%(class)10s班 %(name)-4s同学,总分:%(score)7.2f'%student)

6.    使用字典存放真实值,用变量方式存放格式化字符串

       format='%(class)10s班 %(name)-4s同学,总分:%(score)7.2f'

       output=format%student

       print(output)

7.    以上案例的执行截屏如下:

本节详细介绍了使用百分号占位符 字符串格式化的详细操作方法,并详细进行了举例说明,内容好理解,大家可以自行练习。后续章节将继续介绍字符串格式好的其他方法。

老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。

欢迎大家批评指正,谢谢大家关注!

第3.8节 Python百分号占位符的字符串格式化方法的更多相关文章

  1. 快速理解Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容的区别

    <Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?>老猿介绍了二者的区别,为了快速理解,老猿在此使用另外一种方式补充说明一下: 1.使用%r是调用objec ...

  2. Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?

    Python中使用百分号占位符的字符串格式化方法中%s和%r表示需要显示的数据对应变量x会以str(x)还是repr(x)输出内容展示. 关于str和repr的关系请见: <Python中rep ...

  3. 第11.22节 Python 中re模块的字符串分割器:split函数

    一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...

  4. python关键字、转义符和字符串格式化

    最近在学learn python the hard way,学习到第37章,进行了关于关键字.转义符和字符串格式化的总结.看手头上的中文版没有及时更新.于是就把这些翻译过来,以作查阅. 关键字: 关键 ...

  5. js使用占位符替换字符串

    js使用占位符替换字符串是一个ES6中的模版字符串语法. 在``中使用 ${} var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and ...

  6. Java{0}占位符替换字符串

    Java{0}占位符替换字符串 public class Test { public static void main(String[] args) { System.out.println(Stri ...

  7. 第7.22节 Python中使用super调用父类的方法

    第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...

  8. 【Python】更优的字符串格式化方式 -- "format"替代"%s"

    背景 前段时间看了一篇介绍Python的代码技巧的文章,建议格式化字符串时使用"format"代替使用"%",但是没有说明原因.各博客网站介绍相关用法的博客很多 ...

  9. python字符串格式化方法 format函数的使用

      python从2.6开始支持format,新的更加容易读懂的字符串格式化方法, 从原来的% 模式变成新的可读性更强的 花括号声明{}.用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序 ...

随机推荐

  1. How to refresh datasource args caller[X++]

    To refresh  datasource args caller, you must add override method close on form like source code belo ...

  2. 我叫Mongo,收了「查询基础篇」,值得你拥有

    这是mongo第二篇「查询基础篇」,后续会连续更新6篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟着我一起来探索交流. 通过上一篇基础篇的介 ...

  3. Oracle数据库系统结构(一) 

    1.Oracle数据库系统结构概述 Oracle数据库由存放在磁盘上的数据库(DB)和对磁盘上的数据库进行管理的数据库管理系统(DBMS)两部分构成,分别对应着数据库的存储结构和软件结构. Oracl ...

  4. Java线程状态及切换

    Java线程状态及切换 一.什么是Java线程状态 在Java程序中,用于描述Java线程的六种状态: 新建(NEW):当前线程,刚刚新建出来,尚未启动. 运行(RUNNABLE):当前线程,处于竞争 ...

  5. Python优点与缺点

    优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一.它 ...

  6. 从头学起Verilog(二):时序逻辑基础与回顾

    引言 时序逻辑对于数字电路设计十分重要,本文针对数字电路中的时序逻辑部分进行了系统的回顾. 存储器件 由于时序逻辑的输出不但受当前输入影响,还受之前的输入的影响,所以需要有存储单元对以前的输入进行存储 ...

  7. @Autowired自动装配原理

    在类中为类名添加 @Auwowired注解,为该类在spring中注册成组件 1,先按照类型在容器中找对应的组件:找到一个, 直接赋值,一个都没找到, 抛异常 2,找到了多个:按变量名作为ID继续匹配 ...

  8. Navicat总是提示主键不存在问题

    Windows 和 Linux:打开navicat > 找到工具 > 点击选项- > 外观 > 点击数据 & 网格 > 取消勾选显示主键警告 > 确定. M ...

  9. 深度分析:Java多线程,线程安全,并发包

    1:synchronized(保证原子性和可见性) 1.同步锁.多线程同时访问时,同一时刻只能有一个线程能够访问使synchronized修饰的代码块或方法.它修饰的对象有以下几种: 修饰一个代码块, ...

  10. 如何使用ABBYY FineReader 处理无法识别的字符?

    在识别PDF文档时,我们可能会遇到文档中存在多种语言.多种不同类型文字字符的情况.在ABBYY FineReader 15(Windows系统)OCR文字识别软件的默认语言数据下,可能无法识别PDF文 ...