python基础语法手册format-python基础_格式化输出(%用法和format用法)

Python中应该使用%还是format来格式化字符串?

Python新版本推荐使用format.

Python2.6 新加入的format语法支持.

3.6加入了一个 f-strings新特性

1、区别

Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢?

自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问题。

1

2

3

4

# 定义一个坐标值

c= (250,250)

# 使用%来格式化

s1= "敌人坐标:%s" % c

上面的代码很明显会抛出一个如下的TypeError:

TypeError: not all arguments converted during string formatting

像这类格式化的需求我们需要写成下面的格式才行:

1

2

3

4

# 定义一个坐标值

c= (250,250)

# 使用%丑陋的格式化...

s1= "敌人坐标:%s" % (c,)

而使用format就不会存在上面的问题:

1

2

3

4

# 定义一个坐标值

c= (250,250)

# 使用format格式化

s2= "敌人坐标:{}".format(c)

很显然,format比%方便多了。

2、新特性

在Python3.6中加入了f-strings:

1

2

3

4

In[1]: name= "Q1mi"

In[2]: age= 18

In[3]: f"My name is {name}.I'm {age}"

Out[3]:"My name is Q1mi.I'm 18"

二、常用的format用法

1、通过位置

1

2

3

In[1]: data= ["Q1mi",18]

In[2]:"Name:{0}, Age:{1}".format(*data)

Out[2]:'Name:Q1mi, Age:18'

2、通过关键字

1

2

3

In[1]: data= {"name":"Q1mi","age":18}

In[2]:"Name:{name}, Age:{age}".format(**data)

Out[2]:'Name:Q1mi, Age:18'

3、通过对象属性

1

2

3

4

5

6

7

8

9

10

In[1]:class Person(object):

...:def __init__(self, name, age):

...:self.name= name

...:self.age= age

...:def __str__(self):

...:return "This guy is {self.name}, {self.age} years old.".format(self=self)

...:

In[2]: p= Person("Q1mi",18)

In[3]:str(p)

Out[3]:'This guy is Q1mi, 18 years old.'

4、通过下标

1

2

In[1]:"{0[0]} is {0[1]} years old.".format(data)

Out[1]:'Q1mi is 18 years old.'

5、填充与对齐

填充常跟对齐一起使用

^、<、>分别是居中、左对齐、右对齐,后面带宽度

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

1

2

3

4

5

6

In[1]:"{:>10}".format('18')

Out[1]:' 18'

In[2]:"{:0>10}".format('18')

Out[2]:'0000000018'

In[3]:"{:A>10}".format('18')

Out[3]: 'AAAAAAAA18

补充一个字符串自带的zfill()方法:

Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0。

zfill()方法语法:str.zfill(width)

参数width指定字符串的长度。原字符串右对齐,前面填充0。

返回指定长度的字符串。

1

2

In[1]:"18".zfill(10)

Out[1]:'0000000018'

6、精度与类型f

精度常跟类型f一起使用。

1

2

In[1]:"{:.2f}".format(3.1415926)

Out[1]:'3.14'

其中.2表示长度为2的精度,f表示float类型。

7、其他进制

主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

1

2

3

4

5

6

7

8

In[1]:"{:b}".format(18)

Out[1]:'10010'

In[2]:"{:d}".format(18)

Out[2]:'18'

In[3]:"{:o}".format(18)

Out[3]:'22'

In[4]:"{:x}".format(18)

Out[4]:'12'

8、千位分隔符

1

2

In[1]:"{:,}".format(1234567890)

Out[1]:'1,234,567,890'

http://www.cnblogs.com/gaoya666/articles/8576814.html

http://www.runoob.com/python/att-string-format.html

https://www.cnblogs.com/fat39/p/7159881.html

https://blog.csdn.net/i_chaoren/article/details/77922939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值