格式化字符串的使用

格式化方法

有时候我们会想要从其他信息中构建字符串。这正是 format() 方法大有用武之地的地方。

+

将以下内容保存为文件 str_format.py :

age = 20
name = 'Tom'

print('{0} was {1} years old when he wrote this code'.format(name, age))
print('Why is {0} playing with that python?'.format(name))

输出:
$ python str_format.py
Swaroop was 20 years old when he wrote this book
Why is Swaroop playing with that python?

它是如何工作的

一个字符串可以使用某些特定的格式(Specification),随后,format 方法将被调用,使用这一方法中与之相应的参数替换这些格式。

在这里要注意我们第一次应用这一方法的地方,此处 {0} 对应的是变量 name,它是该格式化方法中的第一个参数。与之类似,第二个格式 {1} 对应的是变量 age,它是格式化方法中的第二个参数。请注意,Python 从 0 开始计数,这意味着索引中的第一位是 0,第二位是 1,以此类推。

我们可以通过联立字符串来达到相同的效果:

name + 'is' +str(age) + 'years old'
但是这样实现是很丑陋,而且也很容易出错。其次,转换至字符串的工作将由format方法自动完成,而不是这般需要明确转换至字符串。再次,当使用format方法的时,我们也可以直接改动文字而不必与变量打交道,反之亦然。

同时还应注意数字只是一个可选选项,所以你同样可以写成:

age = 20
name = 'Swaroop'

print('{} was {} years old when he wrote this book'.format(name, age))
print('Why is {} playing with that python?'.format(name))

这样做同样能得到与前面的程序一样的输出结果。

Python 中 format 方法所做的事情便是将每个参数值替换至格式所在的位置。这之中可以有更详细的格式,例如:

# 对于浮点数 '0.333' 保留小数点(.)后三位
print('{0:.3f}'.format(1.0/3))
# 使用下划线填充文本,并保持文字处于中间位置
# 使用 (^) 定义 '___hello___'字符串长度为 11
print('{0:_^11}'.format('hello'))
# 基于关键词输出 'Swaroop wrote A Byte of Python'  
print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))
输出:

0.333
___hello___
Swaroop wrote A Byte of Python

由于我们正在讨论格式问题,就要注意 print 总是会以一个不可见的“新一行”字符(\n)结尾,因此重复调用 print将会在相互独立的一行中分别打印。为防止打印过程中出现这一换行符,你可以通过 end 指定其应以空白结尾:

+

print('a', end='')
print('b', end='')

输出结果如下:

ab

或者你通过 end 指定以空格结尾:

print('a', end=' ')
print('b', end=' ')
print('c')

输出结果如下:

a b c





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值