python中format和int_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)

in ()

----> 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)

in ()

----> 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)

in ()

----> 1 print '{ name }'.format(name='wang')

KeyError: ' name '

In [3]: print '{ name }'.format(name='wang')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值