文章目录
- 1. 用 % 格式化字符串
- 2. 用 str.format() 格式化字符串
1. 用 % 格式化字符串
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %
的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
>>> print('My name is %s, I am %d years old.' % ('RJ', 10))
My name is RJ, I am 10 years old.
python字符串格式化符号:
格式化字符 | 转换方式 |
%c | 转换成字符(ASCII 码值,或者长度为一的字符串) |
%r | 优先用repr()函数进行字符串转换 |
%s | 优先用str()函数进行字符串转换 |
%d / %i | 转成有符号十进制数 |
%u | 转成无符号十进制数 |
%o | 转成无符号八进制数 |
%x / %X | (Unsigned)转成无符号十六进制数(x/X 代表转换后的十六进制字符的大小写) |
%e / %E | 转成科学计数法(e/E 控制输出e/E) |
%f / %F | 转成浮点数(小数部分自然截断) |
%g / %G | %e 和 %f / %E 和 %F 的简写 |
%% | 输出% |
格式化操作符辅助指令:
符号 | 作用 |
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) |
0 | 显示的数字前面填充‘0’而不是默认的空格 |
% | ‘%%‘输出一个单一的’%’ |
(var) | 映射变量(字典参数) |
m.n | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
>>> '%o' % 100
'144'
>>> '%#o' % 100
'0o144'
>>> '%x' % 100
'64'
>>> '%#x' % 100
'0x64'
>>> '%#X' % 100
'0X64'
>>>
>>> '%f' % 123.456
'123.456000'
>>> '%F' % 123.456
'123.456000'
>>> '%6.2f' % 123.456
'123.46'
>>> '%7.2f' % 123.456
' 123.46'
>>> '%e' % 1234.5678
'1.234568e+03'
>>> '%E' % 1234.5678
'1.234568E+03'
将元祖类型的参数作转换
>>> 'My name is %s, I am %d years old' % ('RJ', 10)
'My name is RJ, I am 10 years old'
将字典类型的参数作转换
>>> 'My name is %(name)s, I am %(age)d years old' % {'age': 10, 'name': 'RJ'}
'My name is RJ, I am 10 years old'
将字符串作为调试工具
字符串格式化操作符不仅很酷,易用,上手快,而且是一个非常有用的调试工具。事实上,所有的Python 对象都有一个字符串表示形式(通过repr()函数,’’ 或str()函数来展现).print 语句自动为每个对象调用str()函数.更好的是,在定义自己的对象时,你可以利用"钩子"为你的对象创建字符串表达形式. 这样,repr(),str()或`` 或者print 被调用时,就可以获得一个适当的字符串描述信息.即使在坏的不能再坏的情况下,repr()或者str()也不能显示一个对象的信息时,Pythonic 方式的默认做法最起码能给你返回想如下格式的信息:
<... something that is useful ...>.
2. 用 str.format() 格式化字符串
Python2.6 开始,新增了一种格式化字符串的函数 str.format()
,它增强了字符串格式化的功能。
基本语法是通过 {}
和 :
来代替以前的 %
。
format 函数可以接受不限个参数,位置可以不按顺序。
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
str.format()
格式化数字的多种方法:
format 格式化方法