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

一、%还是format

1、%、format皇城PK

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

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

# 定义一个坐标值
c = (250, 250)
# 使用%来格式化
s1 = "敌人坐标:%s" % c

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

  TypeError: not all arguments converted during string formatting

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

# 定义一个坐标值
c = (250, 250)
# 使用%丑陋的格式化...
s1 = "敌人坐标:%s" % (c,)

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

# 定义一个坐标值
c = (250, 250)
# 使用format格式化
s2 = "敌人坐标:{}".format(c)

很显然,上面这一个理由就已经足够让你在以后的项目中使用format了。

2、新特性

在Python3.6中加入了f-strings

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、通过位置

In[1]: data = ["Q1mi", 18]
In[2]: "Name:{0}, Age:{1}".format(*data)
Out[2]: ‘Name:Q1mi, Age:18‘

2、通过关键字

In[1]: data = {"name": "Q1mi", "age": 18}
In[2]: "Name:{name}, Age:{age}".format(**data)
Out[2]: ‘Name:Q1mi, Age:18‘

3、通过对象属性

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、通过下标

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

5、填充与对齐

填充常跟对齐一起使用

  • ^、<、>分别是居中、左对齐、右对齐,后面带宽度
  • :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。
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。返回指定长度的字符串。

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

6、精度与类型f

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

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

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

7、其他进制

  b、d、o、x分别是二进制、十进制、八进制、十六进制。

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、千位分隔符

In[1]: "{:,}".format(1234567890)
Out[1]: ‘1,234,567,890‘

原文地址:https://www.cnblogs.com/TuyereIOT/p/9488666.html

时间: 2024-10-04 11:32:06

Python之路--Python中应该使用%还是format来格式化字符串?的相关文章

Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") return test1 res = test() print(res) 输出结果 test <function test1 at 0x021F5C90> 分析:这里print(res)输出的是te

Python之路Python内置函数、zip()、max()、min()

Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回true 例子 print(all([1,2,'1',''])) 输出结果 False 例子2 print(all('')) 输出结果 True any() 把序列中每一个元素做布尔运算,如果有一个为true就返回true, 但

Python之路---------&gt;Python介绍

一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成

【python】format函数格式化字符串的用法

来源:http://www.jb51.net/article/63672.htm 自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱.语法 它通过{}和:来代替%.“映射”示例 通过位置 ? 1 2 3 4 5 6 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kz

Python中用format函数格式化字符串的用法

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱.语法 它通过{}和:来代替%.“映射”示例 通过位置 ? 1 2 3 4 5 6 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},

python之路_day70_django中cookie介绍

一.django模板系统 1.母板 为其他子模板文件所共有的内容文件,各子模板的不同部分通过模板语言占位.注意:我们通常会在母板中定义页面专用的CSS块和JS块,方便子页面替换,如下例: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" con

python之路_day78_django中ajax应用

一.Ajax介绍 Ajax(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML). 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求: 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求. Ajax除了异步的特点外,还有一个就是:浏览器页面局部刷新:(这一特点给用户的感

python之路_day107_django中url反向解析及数据库连接

一.url反向解析 在正式介绍反向解析之前,我们首先介绍一下在django中的url参数,如下为我们url实例,其中name参数就是其别名,也就是我们接下来讲解的反向解析中所依靠的参数. 1.模板中反向解析 在我们的前端页面上,如form表单,我们通常会指定提交的路径,但是以往我们都是将路径写死,这显然不是很合理,因为当url中的路径需要改变的时候,我们又需要逐一去更改页面.这样不合理.所以我们就要用到url的别名进行反向解析. 语法: {% url 'url的别名' %} 实例如下: 2.视图

Python之路66-Django中的Cookie和Session

目录 一.Cookie 二.Session 一.Cookie 1.获取Cookie  request.COOKIES["key"] request.get_signed_cookie(key, default=RAISE_ERROR, s, max_age=None) # 参数 # default:默认值 # salt:加密盐 # max_age:后台控制过期时间 2.设置Cookie rep = HttpResponse(...) 或 rep = render(request, ..