加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python format用法详解

发布时间:2020-12-17 17:00:02 所属栏目:Python 来源:网络整理
导读:format 基本语法是通过 {} 和 : 来代替以前的 % 。 format 函数可以接受不限个参数,位置可以不按顺序。 format基本用法 "Hello?{0}?{1}".format("Chen","xin")?#?引用第一个参数#?输出?'Hello?Chen?xin'"{}?is?cute".format("Chen?xin")?#?引用第一个参数#?

format 基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

format基本用法

"Hello?{0}?{1}".format("Chen","xin")?#?引用第一个参数
#?输出?'Hello?Chen?xin'

"{}?is?cute".format("Chen?xin")?#?引用第一个参数
#?输出?'Chen?xin?is?good'

"My?name?is?{name}".format(name="Chen?xin")?#?引用名字为name的参数
#?输出?'My?name?is?Chen?xin'

1. 类型转换

  • !s

  • !r

"Chen?xin?is?a?cute?{!s}".format("baby")?#?!s?相当于对于参数调用str()
#?输出?'Peppa?pig?is?a?cute?baby'

"Chen?xin?is?a?cute?{!r}".format("baby")?#?!r?相当于对于参数调用repr()
#?输出?"Peppa?pig?is?a?cute?'baby'"

2. 通过位置来填充字符串

print('{0},?{1},?{2}'.format('a',?'b',?'c'))??#?a,?b,?c
print('{},?{},?{}'.format('a',?'c'))?????#?a,?c
print('{2},?{0}'.format('a',?'c'))??#?c,?a
print('{2},?{0}'.format(*'abc'))?????????#?c,?a
print('{0}?{1}?{0}'.format('aa',?'bb'))?????????#?aa?bb?aa

同一个参数可以填充多次,这个是format比%先进的地方

3. 按名称访问参数

print('name:?{last_name}{first_name}'.format(last_name='chen',?first_name='xin'))
#?name:?chenxin

name=?{'last_name':?'chen',?'first_name':?'xin'}
print('name:?{last_name},?{first_name}'.format(**name))
#?name:?chenxin

4.?通过参数属性访问

class?MyList:
????def?__init__(self,?x,?y):
????????self.x,?self.y?=?x,?y
????????
????def?__str__(self):
????????return?'MyList({self.x},?{self.y})'.format(self?=?self)

print(str(MyList('陈新明',?'www.chenxm.cc')))

#?网站名:陈新明,?地址?www.chenxm.cc

5. 通过参数的items访问

my_list?=?['陈新明',?'www.chenxm.cc']
?
print("网站名:{0[0]},?地址?{0[1]}".format(my_list))??#?"0"?是必须的

#?网站名:陈新明,?地址?www.chenxm.cc

6.?对齐字符串

"{:>5}".format(1)?#?设置宽度为5,右对齐
"{:>5}".format(10)
"{:>5}".format(100)
"{:>5}".format(1000)
#?输出下面的结果
'????1'
'???10'
'??100'
'?1000'

print('{:_<30}'.format('left?aligned'))
#'left?aligned__________________'

print('{:_>30}'.format('right?aligned'))
#'__________________right?aligned'

print('{:_^30}'.format('centered'))
#'__________________centered__________________'
  • ^? ?居中? ? ?后面带宽度,

  • <? ?左对齐?后面带宽度,

  • >? ?右对齐 后面带宽度,

  • ?:? ?号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

7.?截断字符串

'{:.5}'.format('Hello?Chen')?#?截取前5个字符
#?输出?'Hello'

8.?数字格式化

print("{:.2f}".format(3.1415926));

#?3.14


  • + 表示在正数前显示 +,

  • -? 负数??

  • (空格) 表示在正数前加空格

  • b??二进制

  • d??十进制

  • o??八进制

  • x? 十六进制


更多样式

9.?使用逗号作为千位分隔符

print('{:,}'.format(1234567890))

#'1,234,567,890'

10. 表示一个百分比

print('number:?{:.2%}'.format(0.61898))

#?number:?61.90%

11.?时间格式化

import?datetime

d?=?datetime.datetime(2018,?7,?31,?15,?58,?58)
print('{:%Y-%m-%d?%H:%M:%S}'.format(d))

#?2018-07-31?15:58:58

12.?访问元组中的元素

a?=?(1,2)
'X:?{0[0]};??Y:?{0[1]}'.format(a)
#?输出?'X:?1;??Y:?2'
#?注意:用%格式化字符串不支持此功能

13.?访问字典中的元素

people?=?{"name":?"Chen",?"age":?18}
"My?name?is?{p[name]}?and?my?age?is?{p[age]}".format(p=people?)


#?输出?'My?name?is?Chen?and?my?age?is?18'
#?注意:用%格式化字符串不支持此功能


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读