Python格式化字符串

上海杰彻自动化设备有限公司 发布时间:2017-09-11 14:38:41
Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查。干脆就在这里整理一下,以便索引。

格式化操作符(%)

"%"是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\tWill\n"

print "%s" %string

print "%r" %string

代码的输出为:

其实,这里的差异是str()和repr()两个内建函数之间的差异:

str()得到的字符串是面向用户的,具有较好的可读性

repr()得到的字符串是面向机器的

通常(不是所有)repr()得到的效果是:obj == eval(repr(obj))

格式化操作符辅助符

通过"%"可以进行字符串格式化,但是"%"经常会结合下面的辅助符一起使用。

辅助符号

说明

*

定义宽度或者小数点精度

-

用做左对齐

+

在正数前面显示加号(+)

#

在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X")

0

显示的数字前面填充"0"而不是默认的空格

(var)

映射变量(通常用来处理字段类型的参数)

m.n

m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

看一些简单的 例子:

num = 100 print "%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.1415926 print "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 Template s = 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")

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站制作公司 http://www.45qun.com

  • 上一篇:JavaScript常用字符串处理方法
  • 下一篇:最后一页
  •