python中%和format

Posted Python,Docker,Linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中%和format相关的知识,希望对你有一定的参考价值。

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

%

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

 

  

  

以上是关于python中%和format的主要内容,如果未能解决你的问题,请参考以下文章

Discuz代码片段

js常用代码片段

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

Python snippet(代码片段)

python 代码片段和解决方案

python 用于数据探索的Python代码片段(例如,在数据科学项目中)