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

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

  1. python 格式化输出:%用法和format用法

    %用法 1.整数的输出 %o -- oct 八进制 %d -- dec 十进制 %x -- hex 十六进制 1 >>> print('%o' % 20) 2 24 3 >&g ...

  2. python基础_格式化输出(%用法和format用法)(转载)

    python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制 %d -- dec 十进制 %x -- hex 十六进制 ...

  3. python中return和printf的区别_Python格式化输出:%s和format()用法比较

    1.python格式化输出历史起源 python2.5之前,我们使用的是老式格式化输出:%s.从python3.0开始起(python2.6同期发布),同时支持两个版本的格式化,多出来的一个新版本就是 ...

  4. python基础语法手册_说一说python中的几个基础语法

    学一门语言,基础语法一定要扎实.就如盖房子一样,地基打得好,任凭风吹雨打,学习python也一样,学习很多东西都会花大量的时间来学习基础语法,对于毫无编程经验的新手而言,这样的无疑是很友好的,那么我们 ...

  5. python基础语法手册format-Python-输出格式化format()方法的基本使用(2)

    本文章主要讲述Python中输出函数里格式化输出<.format()>的使用方法. 任何人可对专栏内容进行任意复制和转载,且无需注明文章作者,出处,来源. 接上次的继续讲,没看过的可以去看 ...

  6. python基础语法手册format-python的格式化输出(format,%)实例详解

    皇城PK Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问 ...

  7. python基础语法手册format-Python基础语法-格式化输出

    Python基础语法 python格式化输出 python在格式化输出过程中,就我个人学习历程来看,有两种格式化输出方法. 第一种是利用 % s %d 进行占位输出,效果就是这样的: info='li ...

  8. python基础_格式化输出(%用法和format用法)

    %用法 1.整数的输出 %o -- oct 八进制 %d -- dec 十进制 %x -- hex 十六进制 >>> print('%o' % 20) 24 >>> ...

  9. python基础语法手册-python语法手册

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 常用的也不超过十个,这种相对于更为复杂的html标记语言来说,markd ...

最新文章

  1. ML之xgboost:利用xgboost算法(自带方式)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  2. win10 64位下运行汇编
  3. 常见的数据增强项目和论文介绍
  4. 在中国,真正达到月收入1万以上的有多少
  5. ThirdServiceManager SDK
  6. [转]vue解决刷新页面vuex数据、params参数消失的问题
  7. neo4j---学习笔记
  8. Windows工具 - 查看apk信息 - 包名/支持Android版本/支持架构等
  9. EditPlus怎么首行和末尾统一添加文本内容
  10. Cassandra启动过程详解【原创】
  11. 穿越六年艰难转型,明道云终于再获主流投资
  12. Docker(狂神说)笔记
  13. Python实现钉钉/企业微信自动打卡
  14. Solidity中文文档(内部)
  15. 新媒体时代的公关怎么做
  16. 什么是RTK?GPS导航和RTK的基本原理有什么不同?
  17. JavaScript怎么获取当前时间的年月日?
  18. 【DB宝3】在Docker中使用rpm包的方式安装Oracle 19c
  19. 2016版excel_excel中yd是什么意思
  20. 缺陷管理 如何发现更多的缺陷

热门文章

  1. pwdencrypt,pwdcompare
  2. 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...
  3. 表格边框重复合并属性: border-collapse:collapse;
  4. Python高级特性: 函数编程 lambda, filter,map,reduce
  5. linq语句复杂查询和分开查询的性能对比
  6. 对 VR 项目开发流程的调研
  7. 为什么现有的工作制度 对 上班族不利
  8. ASIHTTPRequest取消异步请求
  9. 暂时无法登陆GOOGLE,却依然可以用GOOGLE搜索--更多GOOGLE入口
  10. supersu二进制更新安装失败_helm安装教程