大家好,欢迎来到IT知识分享网。
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
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22707.html