两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些

%

In [22]: print '%s' % 'hello world'
hello world In [23]: print '%s: %d' % ('name', 13)
name: 13 In [24]: import math In [25]: print 'PI: %.5f' % pi
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-25-b457c33a3305> in <module>()
----> 1 print 'PI: %.5f' % pi NameError: name 'pi' is not defined In [26]: print 'PI: %.5f' % math.pi
PI: 3.14159 In [27]: a = ('Bill', 'Gates') In [28]: '%s, %s' % a
Out[28]: 'Bill, Gates'

  

format

Help on method_descriptor:

format(...)
S.format(*args, **kwargs) -> string Return a formatted version of S, using substitutions from args and kwargs.
The substitutions are identified by braces ('{' and '}').
(END)

用法如下:

In [29]: "{}".format('hello')
Out[29]: 'hello' In [30]: '{} {}'.format('hello', 'world')
Out[30]: 'hello world' In [31]: '{1} {0} {0}'.format('hello', 'python')
Out[31]: 'python hello hello' In [32]: '{0} {0} {1}'.format(*('hello', 'Python'))
Out[32]: 'hello hello Python' In [33]: '{length} {width}'.format(length=12, width=13)
Out[33]: '12 13' In [34]: '{length} {width}'.format(width=12, length=13)
Out[34]: '13 12' In [35]: '{length} {width}'.format({'width': 12, 'length': 13})
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-35-f8990d240643> in <module>()
----> 1 '{length} {width}'.format({'width': 12, 'length': 13}) KeyError: 'length' In [36]: '{length} {width}'.format(**{'width': 12, 'length': 13})
Out[36]: '13 12' In [37]: "'x': {0[0]}, 'y': {0[1]}".format((12, 13))
Out[37]: "'x': 12, 'y': 13"

最常用的可能就是上面这些,不过format不仅仅如此,还可以做前分位符,指定字符串宽度,代替%s %r,处理时间的格式等

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2" >>> '{:<30}'.format('left aligned')
'left aligned '
>>> '{:>30}'.format('right aligned')
' right aligned'
>>> '{:^30}'.format('centered')
' centered '
>>> '{:*^30}'.format('centered') # use '*' as a fill char
'***********centered***********' >>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000' >>> # format also supports binary numbers
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
'int: 42; hex: 2a; oct: 52; bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010' >>> '{:,}'.format(1234567890)
'1,234,567,890' >>> points = 19.5
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 88.64%' >>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

大家可以看看官方文档(以上部分例子摘自官方文档):

https://docs.python.org/2/library/string.html

注意:大括号和变量名之间是不能有空格的,否则会提示错误keyerror,如下

In [1]: print '{name}'.format(name='wang')
wang In [2]: print '{ name }'.format(name='wang')
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-2-7b45246725e0> in <module>()
----> 1 print '{ name }'.format(name='wang') KeyError: ' name ' In [3]: print '{ name }'.format(name='wang')

  

  

python中%和format的更多相关文章

  1. Python中格式化format()方法详解

    Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...

  2. Python中的format()函数

    普通格式化方法 (%s%d)生成格式化的字符串,其中s是一个格式化字符串,d是一个十进制数; 格式化字符串包含两部分:普通的字符和转换说明符(见下表), 将使用元组或映射中元素的字符串来替换转换说明符 ...

  3. Python中的format函数

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序 ...

  4. Python中print/format字符串格式化实例

    Python 字符串格式化使用 "字符 %格式1 %格式2 字符"%(变量1,变量2),%格式表示接受变量的类型.简单的使用例子如下 # 例:字符串格式化Name = '17jo' ...

  5. python中的format

    format()格式化字符串,将占位符替换成内容,举个例子: 1 a = "hello {0} welcome to {1}" 2 a1 = a.format("dlrb ...

  6. python 中str format 格式化数字补0方法

      >>> "{0:03d}".format(1)'001'>>> "{0:03d}".format(10)'010'> ...

  7. Python中str.format()字典及list传入详解

  8. python开发_python中str.format()

    格式化一个字符串的输出结果,我们在很多地方都可以看到,如:c/c++中都有见过 下面看看python中的字符串格式函数str.format(): 1 #使用str.format()函数 2 3 #使用 ...

  9. python中的printf:%号拼接字符串和format函数

    在C语言中,我们使用printf("%s","hello")这种形式进行字符串的拼接 在python中,进行这样的拼接有两种实现方式,分别是%号拼接以及使用fo ...

随机推荐

  1. 纯手工打造漂亮的瀑布流,五大插件一个都不少Bootstrap+jQuery+Masonry+imagesLoaded+Lightbox!

    前两天写的文章<纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!>受到很多网友的喜爱,今天特别推出姊妹篇<纯手工打造漂亮的瀑 ...

  2. 高性能JavaScript 重排与重绘

    先回顾下前文高性能JavaScript DOM编程,主要提了两点优化,一是尽量减少DOM的访问,而把运算放在ECMAScript这一端,二是尽量缓存局部变量,比如length等等,最后介绍了两个新的A ...

  3. sql中去除重复的项

    方法一:group by  (取最小的id)select min(id) id,T from Table_1 group by T 方法二:union (不需要id)select T from Tab ...

  4. sql server 字符串函数str()

    语法: STR(nExpres[,nLength[,nDecimalPlaces]]) 参数: nExpression------STR要计算的数值表达式. nLength------------ST ...

  5. JAVA内嵌数据库H2的使用入门

    H2数据库是开源的,非常适合做嵌入式数据库使用,尤其用java编码的时候. H2的优势: 1.h2采用纯Java编写,因此不受平台的限制. 2.h2只有一个jar文件,十分适合作为嵌入式数据库试用. ...

  6. javascript 连等赋值问题(这是从SegmentFault转过来的一个问题)

    var a = {n:1}; var b = a; // 持有a,以回查 a.x = a = {n:2}; alert(a.x);// --> undefined alert(b.x);// - ...

  7. 模块加载(require)及定义(define)时的路径

    最近新公司在用requireJS进行JS的整合,刚开始接触有点蒙,于是深入了解了一下.requireJS主要是为了解决一下两个问题: (1)实现js文件的异步加载,避免网页失去响应: (2)管理模块之 ...

  8. js原型继承的几种方式

    1. 原型链继承 2,构造函数继承(对象冒充继承) 3,组合继承(原型链继承+构造函数继承) 4,原型式继承 5. 寄生组合式继承 一.原型链继承 function Show(){ this.name ...

  9. 你需要知道的MySQL开源存储引擎TokuDB

    在四月份的Percona Live MySQL会议上, TokuDB庆祝自己成为开源存储引擎整一周年.我现在仍能记得一年前它刚创建时的官方声明与对它的期望.当时的情况非常有意思,因为它拥有帮助MySQ ...

  10. css3 操作动画要点

    CSS3 有3种和动画相关的属性:transform, transition, animation. 不同点: 1.  触发条件不同.transition通常和hover等事件配合使用,由事件触发.a ...