第3.8节 Python百分号占位符的字符串格式化方法
一、 概念
格式化字符串就是将一些变量转换为字符串并按一定格式输出字符串,包括指定字符的位置、对齐方式、空位补充方式等。Python提供了多种字符串格式设置方法。本节先介绍一种简单的方法。
格式化字符串时,指定字符串格式化输出格式的字符串称为“格式字符串”。在使用字符串格式化方法时,在格式字符串内使用特定符号及其后面的格式及类型指定的串称为“格式符”或“转换说明符”,格式符的标记符号称为“占位符”,格式符对应的真实输出数据称为“真实值”。在使用百分号%的字符串格式化方法时,百分号就是占位符,占位符及其后面的格式及类型指定的串就是“格式符”。
格式化字符串时,可以将格式字符串与真实值分开存放,输出时再拼接。
二、使用百分号的字符串格式化方法
该方式类似C语言中的经典函数printf,在函数左边输出格式部分用百分号%开头的格式符指定在哪个地方输出一个什么类型的变量,并可以指定输出的格式。同时在字符串右边引号的后面紧跟占位符百分号,后接真实值。真实值可以通过单个数值、元组或字典方式输入:
1. 如果只有一个真实值,则直接在百分号后面接变量或值,也可以将该真实值存放到单个元素的元组内作为元组输入;
2. 如果有多个真实值,可以通过将这些真实值放在一个元组内,原则内的每个元素就是一个真实值,占位符对应数据与元组内的元组逐一对应;
3. 如果输出数据存放在一个字典内,则在格式符中需要包含键名,并将字典作为真实值的容器输入。
格式符的语法:%[(name)][flags][width].[precision]typecode。
- (name)参数:当使用字典作为真实值的存放容器,name在此对应输出值关联的字典的键名,必须使用小括号将键名括起来,如果字典中不存在该键,则引发异常,否则输出该键对应的值;
- flags可以有+,-,' '或0。+表示应该包含数字的正负号。-表示左对齐,没有表示右对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充;
- width表示该输出值占用的宽度;
- precision表示小数点后精度;
- 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百分号占位符的字符串格式化方法的更多相关文章
- 快速理解Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容的区别
<Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?>老猿介绍了二者的区别,为了快速理解,老猿在此使用另外一种方式补充说明一下: 1.使用%r是调用objec ...
- Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?
Python中使用百分号占位符的字符串格式化方法中%s和%r表示需要显示的数据对应变量x会以str(x)还是repr(x)输出内容展示. 关于str和repr的关系请见: <Python中rep ...
- 第11.22节 Python 中re模块的字符串分割器:split函数
一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...
- python关键字、转义符和字符串格式化
最近在学learn python the hard way,学习到第37章,进行了关于关键字.转义符和字符串格式化的总结.看手头上的中文版没有及时更新.于是就把这些翻译过来,以作查阅. 关键字: 关键 ...
- js使用占位符替换字符串
js使用占位符替换字符串是一个ES6中的模版字符串语法. 在``中使用 ${} var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and ...
- Java{0}占位符替换字符串
Java{0}占位符替换字符串 public class Test { public static void main(String[] args) { System.out.println(Stri ...
- 第7.22节 Python中使用super调用父类的方法
第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...
- 【Python】更优的字符串格式化方式 -- "format"替代"%s"
背景 前段时间看了一篇介绍Python的代码技巧的文章,建议格式化字符串时使用"format"代替使用"%",但是没有说明原因.各博客网站介绍相关用法的博客很多 ...
- python字符串格式化方法 format函数的使用
python从2.6开始支持format,新的更加容易读懂的字符串格式化方法, 从原来的% 模式变成新的可读性更强的 花括号声明{}.用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序 ...
随机推荐
- cmd的基本命令
使用方法Windows键+R键输入cmd回车 Windows 系统常用小工具 工具名称 cmd 命令 含义 计算器 calc 与 "工具名称" 相同 记事本 notepad 与 & ...
- debian修改crontab默认编辑器为vim
debian终端下默认编辑器为nano,比如crontab -e就会打开nano,这个编辑器用起来很不习惯,想修改为vim,当然,你的debian系统必须先安装vim.如果已经安装vim,请输入如下命 ...
- 廖师兄springboot微信点餐开发中相关注解使用解释
package com.imooc.dataobject;import lombok.Data;import org.hibernate.annotations.DynamicUpdate;impor ...
- Python网络编程_抓取百度首页代码(注释详细)
1 #coding=utf-8 2 #网络编程 3 4 #客户端建立socket套接字 5 #引入socket模块 6 import socket 7 #实例化一个套接字,2个参数分别是: IPV4. ...
- SQL Server数据库Union和Union All查询出数据的区别?
好久没有更新博客了,可能是最近比较忙,总是忽略了一些事情,今天查了做了一些数据分析的数据,突然感觉对Union和Union all有些不太理解了,可能是自己老了吧,就翻了一些资料,进行回忆和学习,趁着 ...
- Windows上Jenkins插件下载慢解决方法
替换文件内容 Jenkins/updates/default.json 替换 updates.jenkins-ci.org/download 为 mirrors.tuna.tsinghua.edu.c ...
- 运维自动化之1 - ansible 批量主机管理
2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一 ...
- 这份java多线程笔记,你真得好好看看,我还没见过总结的这么全面的
1.线程,进程和多线程 1.程序:指指令和数据的有序集合,其本身没有任何意义,是一个静态的概念 2.进程:指执行程序的一次执行过程,是一个动态的概念.是系统资源分配的单位(注意:很多多线程是模拟出来的 ...
- 深度分析:面试腾讯,阿里面试官都喜欢问的String源码,看完你学会了吗?
前言 最近花了两天时间,整理了一下String的源码.这个整理并不全面但是也涵盖了大部分Spring源码中的方法.后续如果有时间还会将剩余的未整理的方法更新到这篇文章中.方便以后的复习和面试使用.如果 ...
- 使用Camtasia创作抖音卡点视频
空闲的时候刷一刷抖音相信已经成为很多人的日常啦,抖音里面的视频形式多种多样,而其中的卡点视频更是被大家热烈追捧.如果你外出旅行拍摄了很多好看的照片,就很适合用卡点视频的形式展现出来. 如果你想要制作这 ...