【Python笔记】字符串格式化

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.nm 是显示的最小总宽度,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 格式化方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值