18.Python格式化字符串(格式化输出)
Python 提供了“%”对各种类型的数据进行格式化输出,例如如下代码:
- price = 108
- print ("the book's price is %s" % price)
上面程序中的 print 函数包含以下三个部分,第一部分是格式化字符串(相当于字符串模板),该格式化字符串中包含一个“%s”占位符,它会被第三部分的变量或表达式的值代替;第二部分固定使用“%”作为分隔符。
格式化字符串中的“%s”被称为转换说明符(Conversion Specifier),其作用相当于一个占位符,它会被后面的变量或表达式的值代替。“%s”指定将变量或值使用 str() 函数转换为字符串。
如果格式化字符串中包含多个“%s”占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来。例如如下代码:
- user = "Charli"
- age = 8
- # 格式化字符串有两个占位符,第三部分提供2个变量
- print("%s is a %s years old boy" % (user , age))
在格式化字符串中难道只能使用“%s”吗?还有其他转换说明符吗?如果只有“%s”这一种形式,Python 的格式化功能未免也太单一了。
实际上, Python 提供了如表 1 所示的转换说明符:
| 转换说明符 | 说明 |
|---|---|
| %d,%i | 转换为带符号的十进制形式的整数 |
| %o | 转换为带符号的八进制形式的整数 |
| %x,%X | 转换为带符号的十六进制形式的整数 |
| %e | 转化为科学计数法表示的浮点数(e 小写) |
| %E | 转化为科学计数法表示的浮点数(E 大写) |
| %f,%F | 转化为十进制形式的浮点数 |
| %g | 智能选择使用 %f 或 %e 格式 |
| %G | 智能选择使用 %F 或 %E 格式 |
| %c | 格式化字符及其 ASCII 码 |
| %r | 使用 repr() 将变量或表达式转换为字符串 |
| %s | 使用 str() 将变量或表达式转换为字符串 |
当使用上面的转换说明符时,可指定转换后的最小宽度,例如如下代码:
- num = -28
- print("num is: %6i" % num)
- print("num is: %6d" % num)
- print("num is: %6o" % num)
- print("num is: %6x" % num)
- print("num is: %6X" % num)
- print("num is: %6s" % num)
运行上面代码,可以看到如下输出结果:
num is: -28
num is: -28
num is: -34
num is: -1c
num is: -1C
num is: -28
从上面的输出结果可以看出,此时指定了字符串的最小宽度为 6,因此程序转换数值时总宽度为 6,程序自动在数值前面补充了三个空格。
在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志:
- -:指定左对齐。
- +:表示数值总要带着符号(正数带“+”,负数带“-”)。
- 0:表示不补充空格,而是补充 0。
提示:这三个标志可以同时存在。
例如如下代码:
- num2 = 30
- # 最小宽度为0,左边补0
- print("num2 is: %06d" % num2)
- # 最小宽度为6,左边补0,总带上符号
- print("num2 is: %+06d" % num2)
- # 最小宽度为6,右对齐
- print("num2 is: %-6d" % num2)
运行上面代码,可以看到如下输出结果:
num2 is: 000030
num2 is: +00030
num2 is: 30
对于转换浮点数,Python 还允许指定小数点后的数字位数:如果转换的是字符串,Python 允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点 ( . ) 隔开。例如如下代码:
- my_value = 3.001415926535
- # 最小宽度为8,小数点后保留3位
- print("my_value is: %8.3f" % my_value)
- # 最小宽度为8,小数点后保留3位,左边补0
- print("my_value is: %08.3f" % my_value)
- # 最小宽度为8,小数点后保留3位,左边补0,始终带符号
- print("my_value is: %+08.3f" % my_value)
- the_name = "Charlie"
- # 只保留3个字符
- print("the name is: %.3s" % the_name) # 输出Cha
- # 只保留2个字符,最小宽度10
- print("the name is: %10.2s" % the_name)
运行上面代码,可以看到如下输出结果:
my_value is: 3.001
my_value is: 0003.001
my_value is: +003.001
the name is: Cha
the name is: Ch
18.Python格式化字符串(格式化输出)的更多相关文章
- python 使用json.dumps() 的indent 参数,获得漂亮的格式化字符串后输出
想获得漂亮的格式化字符串后输出,可以使用json.dumps() 的indent 参数.它会使得输出和pprint() 函数效果类似 >>> data {'age': 4, 'nam ...
- python(七)字符串格式化、生成器与迭代器
字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...
- Python 的字符串格式化和颜色控制
(部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...
- Python基础-字符串格式化_百分号方式_format方式
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- python中字符串格式化%与.format
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python:字符串格式化
Python中提供了多种格式化字符串的方式,遇到一个项目,在一个文件中,就用了至少两种方式.特别是在使用Log时,更让人迷惑. 因此特地花时间来了解一下Python中字符串格式化的几种方式: # -* ...
- Python基础 | 字符串格式化输出及print()函数介绍
在写代码时,我们会经常与字符串打交道,Python中控制字符串格式通常有三种形式,分别是使用str%,str.format(),f-str,用法都差不多,但又有一些细微之差. 一起来看看吧~~~ 一. ...
- python中字符串格式化的意义(化妆)
格式 描述%% 百分号标记 #就是输出一个%%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号 ...
- Python进阶-字符串格式化
目录 前言 %格式化 str.format() f-Strings 特殊符号处理 前言 在 Python 3.6 之前,字符串格式化方法主要有两种: %格式化 str.format() 在Python ...
- python的字符串格式化
1.python到底有那几种字符串格式化模块? python有3种格式化字符串的方法: 传统的%字符串格式符 str.format函数 字符串模版template 新的python 3.6+还提供了新 ...
随机推荐
- HDU 6662 Acesrc and Travel 换根DP,宇宙最傻记录
#include<bits/stdc++.h> typedef long long ll; using namespace std; const int maxn=1e6+50; cons ...
- 福建工程学院第十四届ACM校赛M题题解 fwt进阶,手推三进制fwt
第九集,结束亦是开始 题意: 大致意思就是给你n个3进制的数字,让你计算有多少对数字的哈夫曼距离等于i(0<=i<=2^m) 思路: 这个是一个防ak题,做法是要手推公式的fwt 大概就这 ...
- springMvc接受单个文件,多个文件,多组文件
web端 <form id="iconForm" enctype="multipart/form-data"></form> JS:通过 ...
- 剑指offer-数组中重复的数字-数组-python
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 前端页面多级联动传输数据类型问题(数组or字符串)后端处理
在最近的工作中,遇到一个问题,个人所做的简历模块中有两个字段,分别是个人信息中的户口所在地和现居住城市. 前端界面中这两个选项框是用到了二级和三级联动,在向后端传输时希望可以通过数组类型进行传输,例如 ...
- TP-Link 路由器 如何在现有的环境中改善无线信号传输质量
http://service.tp-link.com.cn/detail_article_346.html
- 第96:SVM简介与简单应用
详细推到见:https://blog.csdn.net/v_july_v/article/details/7624837 python实现方式:
- 关于this关键字
首先看一下这篇博客介绍:http://blog.csdn.net/ccpat/article/details/44515335 下面贴段代码 package com.xujingyang.test; ...
- deep_learning_tensorflow_get_variable()
maxwell_tesla tf.get_variable函数的使用 tf.get_variable(name, shape, initializer): name就是变量的名称,shape是变量的 ...
- C语言字符串操作小结
1)字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串s ...