字符串的格式化html

Python 支持格式化字符串的输出 。尽管这样可能会用到很是复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。在   Python 中,字符串格式化使用与 C 中 sprintf 函数同样的语法。python

在python中格式化输出字符串通用的形式为:函数

格式标记字符串 % 要输出的值组ui

其中,左边部分的"格式标记字符串"能够彻底和c中的一致。右边的"值组"若是有两个及以上的值则须要用小括号括起来,中间用逗号隔开。spa

重点来看左边的部分。左边部分的最简单形式为:设计

%code指针

其中的code有多种,不过因为在python中,全部东西均可以转换成string类型,所以,若是没有什么特殊需求彻底能够所有使用‘%s’来标记。好比:code

'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])orm

它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,同样没有问题。在这个过程当中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,而后再调用str()函数来输出。前面说过还有一个repr()函数,若是要用这个函数,能够用%r来标记。除了%s外,还有不少相似的code:htm

整型数:%d

无符号整型数:%u

八进制:%o

十六进制:%x   %X

浮点数:%f

科学记数法: %e   %E

根据数值的不一样自动选择%e或%f: %g

根据数值的不一样自动选择%E或%f: %G

就跟前面说用\进行转义同样,这里用%做为格式标记的标识,也有一个%自己应该如何输出的问题。若是要在"格式标记字符串"中输出%自己,能够用%%来表示。

上面说的只是格式标记的最简间的形式,来看复杂一点的:

‘%6.2f’ % 1.235

在这种形式中,在f的前面出现了一个相似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:

‘%06.2f’ % 1.235

在6的前面多了一个0,表示若是输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,能够看到小数也占用一位。相似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:

‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}

这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。前面的例子能够看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每一个格式标记对应哪一个值由小括号中的键来指定。这行代码的输出为:'newsim:0009.5'。

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程当中再产生,那怎么输入呢,固然不能用%%d.%df或%d.%d%f。能够用%*.*f的形式,固然在后面的”要输出的值组“中包含那两个*的值。好比:'%*.*f' % (6, 2, 2.345)就至关于'%6.2f' % 2.345。

这是这本书到此为止看起来最复杂的内容。不过若是记不住,或不想那么耐烦,彻底能够所有用%s代替,或者用多个"+"来构造相似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。

字符串格式化代码以下:

%%百分号标记

%c字符及其ASCII码

%s字符串

%d有符号整数(十进制)

%u无符号整数(十进制)

%o无符号整数(八进制)

%x无符号整数(十六进制)

%X无符号整数(十六进制大写字符)

%e浮点数字(科学计数法)

%E浮点数字(科学计数法,用E代替e)

%f浮点数字(用小数点符号)

%g浮点数字(根据值的大小采用%e或%f)

%G浮点数字(相似于%g)

%p指针(用十六进制打印值的内存地址)

%n存储输出字符的数量放进参数列表的下一个变量中

字符串的相关操做举例

# 字符串对齐
word = "version3.0"
# 20个字符中间对齐
print word.center(20)
# 20个字符两边补齐*
print word.center(20, "*")
# 左对齐
print word.ljust(0)
# 20个字符右对齐
print word.rjust(20)
# 前面空20个字符
print "% 30s" % word
#去除转义字符
strip()
lstrip()
rstrip()
#字符的分割
split()
split(",")
split(",", 2)
#字符串比较
startswith()
endswith()
#查找替换
find(substring [, start [, end]])
rfind()
replace(new, old [, max])
#字符串与日期
time.strftime(format[, tuple]) ->string
time.strptime(string, format) ->struct_time
字符串的格式化
>>> k = "uid"
>>> v = "sa"
>>> "%s=%s" % (k, v)

'uid=sa' 整个表达式的值为一个字符串。第一个 %s 被变量 k 的值替换;第二个 %s 被 v 的值替换。Python格式化字符串的全部其它字符 (在这个例子中,是等号) 按原样打印输出。注意 (k, v) 是一个 tuple。字符串格式化不仅是链接。它甚至不单单是格式化。它也是强制类型转换。

字符串格式化与字符串链接的比较

>>> uid = "sa"
>>> pwd = "secret"
>>> print pwd + " is not a good password for " + uid
secret is not a good password for sa
>>> print "%s is not a good password for %s" % (pwd, uid)
secret is not a good password for sa
>>> userCount = 6
>>> print "Users connected: %d" % (userCount, )
Users connected: 6
>>> print "Users connected: " + userCount
Traceback (innermost last):
File "", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects