今天去深圳浪了一圈,累到不行,本来想直接摸了,但是还是决定再睡前复习一下。那今天想说说Python中跟print一起出现的格式化操作符
- 什么是格式化操作符?
我自己理解的是,在输出一串结果前,你可能希望你的结果按照某种格式/结构输出,比如说你现在有一个列表:
name_list = [{'name':'Ryan','age':27},{'name':'Robin','age':26}]
而你希望的输出是:
Ryan is 27 years old
Robin is 26 years old
这个时候,你就需要格式化操作符了,事实上,Python中的格式化操作符并非只有(%)一种,但是%无疑是最简便也是最常用的一种。
以下复制粘贴一下Python简明教程里的格式化符号,方便今后查询:
格式化符号 | 说明 |
---|---|
%s | 字符串 采用str()的显示 (面向用户) |
%r | 字符串 采用repr()的显示 (面向电脑) |
%c | 单个字符 |
%b | 二进制整数 |
%d | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数 (基底写为e) |
%f | 浮点数 |
%g | 指数(e)或浮点数 |
%% | 输出% (格式化字符串里面包括百分号,那么必须使用%%) |
以下是一些例子,方便我们理解上面的操作符:
格式化输出数字
num = 100
print "%d to hex is %x" %(num, num) #hex:十六进制
print "%d to hex is %X" %(num, num)
print "%d to hex is %#x" %(num, num)
print "%d to hex is %#X" %(num, num)
output:
100 to hex is 64
100 to hex is 64
100 to hex is 0x64
100 to hex is 0X64
#在上面的输入中,“#”是格式化操作的辅助符号,表示在八进制数前面显示零(0),在十六进制前面显示"0x"或者”0X"
# 浮点数
f_num = 3.1415926
print "value of f_num is: %.4f" %f_num
print "value of f_num is: %.*f" % (4, f_num)
output:
value of f_num is: 3.1416
value of f_num is: 3.1416
#上面两种浮点数的输出方法,一种是%.4f, 在操作符里制定浮点位数为4,一种是%(4.f_num),在操作符后的元组中制定浮点位数为4
#dict参数
name_list = [{'name':'Ryan','age':27},{'name':'Robin','age':26}]
for student in name_list:
print ('%(name)s is %(age)d years old'% student)
output:
Ryan is 27 years old
Robin is 26 years old
#tuple参数:
user_id = [('James', 1410),('Lily', 1411),('Tesla', 1412)]
for user in user_id:
print ("%s's user id is %d" % user)
output:
James's user id is 1410
Lily's user id is 1411
Tesla's user id is 1412
事实上,在新版的Python中,引入了string模块,里面的format()函数能更好的完成格式化的工作,这里借用stack overflow中的一个答案:
>>> tup = (1,2,3)
>>> print "First: %d, Second: %d, Third: %d" % tup
>>> print 'First: {}, Second: {}, Third: {}'.format(1,2,3)
>>> print 'First: {0[0]}, Second: {0[1]}, Third: {0[2]}'.format(tup)
First: 1, Second: 2, Third: 3
First: 1, Second: 2, Third: 3
First: 1, Second: 2, Third: 3
在这个话题下面,还可以引申出Template函数的运用,我们下次再说。
网友评论