在编写程序的过程中,经常需要进行格式化输出,每次用每次查。干脆就在这里整理一下,以便索引。
格式化操作符(%)
"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。下面整理了一下Python中字符串格式化符合:
| 格式化符号 | 说明 |
| %c | 转换成字符(ASCII 码值,或者长度为一的字符串) |
| %r | 优先用repr()函数进行字符串转换 |
| %s | 优先用str()函数进行字符串转换 |
| %d / %i | 转成有符号十进制数 |
| %u | 转成无符号十进制数 |
| %o | 转成无符号八进制数 |
| %x / %X | 转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写) |
| %e / %E | 转成科学计数法(e / E控制输出e / E) |
| %f / %F | 转成浮点数(小数部分自然截断) |
| %g / %G | %e和%f / %E和%F 的简写 |
| %% | 输出% (格式化字符串里面包括百分号,那么必须使用%%) |
这里列出的格式化符合都比较简单,唯一想要强调一下的就是"%s"和"%r"的差别。看个简单的代码:string = "Hello Will
"print "%s" %stringprint "%r" %string代码的输出为:其实,这里的差异是str()和repr()两个内建函数之间的差异:
- str()得到的字符串是面向用户的,具有较好的可读性
- repr()得到的字符串是面向机器的
- 通常(不是所有)repr()得到的效果是:obj == eval(repr(obj))
格式化操作符辅助符
通过"%"可以进行字符串格式化,但是"%"经常会结合下面的辅助符一起使用。
| 辅助符号 | 说明 |
| * | 定义宽度或者小数点精度 |
| - | 用做左对齐 |
| + | 在正数前面显示加号(+) |
| # | 在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X") |
| 0 | 显示的数字前面填充"0"而不是默认的空格 |
| (var) | 映射变量(通常用来处理字段类型的参数) |
| m.n | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
看一些简单的 例子:num = 100print "%d to hex is %x" %(num, num)print "%d to hex is %X" %(num, num)print "%d to hex is %#x" %(num, num)print "%d to hex is %#X" %(num, num) # 浮点数f = 3.1415926print "value of f is: %.4f" %f# 指定宽度和对齐students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}]print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"])print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"])print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"])# dict参数for student in students:print "%(name)s is %(age)d years old" %student代码输出为:对于Python的格式化操作符,不仅可以接受tuple类型的参数,也可以支持dict,象上面代码的最后一部分,那么格式化字符串中就可以直接使用"%(key)s"(这里的s根据具体类型改变)的方式表示dict中对应的value了。
字符串模板
其实,在Python中进行字符串的格式化,除了格式化操作符,还可以使用string模块中的字符串模板(Template)对象。下面就主要看看Template对象的substitute()方法:from string import Templates = Template("Hi, $name! $name is learning $language")print s.substitute(name="Wilber", language="Python")d = {"name": "Will", "language": "C#"}print s.substitute(d)# 用$$表示$符号s = Template("This book ($bname) is 17$$")print s.substitute(bname="TCP/IP")代码结果为:
总结
本文整理了一些格式化字符,以及一些辅助指令,结合格式化操作符(%),就可以生成特定格式的字符串了。也可以使用字符串模板来进行字符串格式化。无需操作系统直接运行 Python 代码 http://www.linuxidc.com/Linux/2015-05/117357.htmCentOS上源码安装Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htmPython脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htmPython 语言的发展简史 http://www.linuxidc.com/Linux/2014-09/107206.htm
Python 的详细介绍:请点这里
Python 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/119823.htm