python中%和format
两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些
%
In [22]: print '%s' % 'hello world'
hello world In [23]: print '%s: %d' % ('name', 13)
name: 13 In [24]: import math In [25]: print 'PI: %.5f' % pi
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-25-b457c33a3305> in <module>()
----> 1 print 'PI: %.5f' % pi NameError: name 'pi' is not defined In [26]: print 'PI: %.5f' % math.pi
PI: 3.14159 In [27]: a = ('Bill', 'Gates') In [28]: '%s, %s' % a
Out[28]: 'Bill, Gates'
format
Help on method_descriptor: format(...)
S.format(*args, **kwargs) -> string Return a formatted version of S, using substitutions from args and kwargs.
The substitutions are identified by braces ('{' and '}').
(END)
用法如下:
In [29]: "{}".format('hello')
Out[29]: 'hello' In [30]: '{} {}'.format('hello', 'world')
Out[30]: 'hello world' In [31]: '{1} {0} {0}'.format('hello', 'python')
Out[31]: 'python hello hello' In [32]: '{0} {0} {1}'.format(*('hello', 'Python'))
Out[32]: 'hello hello Python' In [33]: '{length} {width}'.format(length=12, width=13)
Out[33]: '12 13' In [34]: '{length} {width}'.format(width=12, length=13)
Out[34]: '13 12' In [35]: '{length} {width}'.format({'width': 12, 'length': 13})
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-35-f8990d240643> in <module>()
----> 1 '{length} {width}'.format({'width': 12, 'length': 13}) KeyError: 'length' In [36]: '{length} {width}'.format(**{'width': 12, 'length': 13})
Out[36]: '13 12' In [37]: "'x': {0[0]}, 'y': {0[1]}".format((12, 13))
Out[37]: "'x': 12, 'y': 13"
最常用的可能就是上面这些,不过format不仅仅如此,还可以做前分位符,指定字符串宽度,代替%s %r,处理时间的格式等
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2" >>> '{:<30}'.format('left aligned')
'left aligned '
>>> '{:>30}'.format('right aligned')
' right aligned'
>>> '{:^30}'.format('centered')
' centered '
>>> '{:*^30}'.format('centered') # use '*' as a fill char
'***********centered***********' >>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000' >>> # format also supports binary numbers
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
'int: 42; hex: 2a; oct: 52; bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010' >>> '{:,}'.format(1234567890)
'1,234,567,890' >>> points = 19.5
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 88.64%' >>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'
大家可以看看官方文档(以上部分例子摘自官方文档):
https://docs.python.org/2/library/string.html
注意:大括号和变量名之间是不能有空格的,否则会提示错误keyerror,如下
In [1]: print '{name}'.format(name='wang')
wang In [2]: print '{ name }'.format(name='wang')
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-2-7b45246725e0> in <module>()
----> 1 print '{ name }'.format(name='wang') KeyError: ' name ' In [3]: print '{ name }'.format(name='wang')
python中%和format的更多相关文章
- Python中格式化format()方法详解
Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...
- Python中的format()函数
普通格式化方法 (%s%d)生成格式化的字符串,其中s是一个格式化字符串,d是一个十进制数; 格式化字符串包含两部分:普通的字符和转换说明符(见下表), 将使用元组或映射中元素的字符串来替换转换说明符 ...
- Python中的format函数
format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序 ...
- Python中print/format字符串格式化实例
Python 字符串格式化使用 "字符 %格式1 %格式2 字符"%(变量1,变量2),%格式表示接受变量的类型.简单的使用例子如下 # 例:字符串格式化Name = '17jo' ...
- python中的format
format()格式化字符串,将占位符替换成内容,举个例子: 1 a = "hello {0} welcome to {1}" 2 a1 = a.format("dlrb ...
- python 中str format 格式化数字补0方法
>>> "{0:03d}".format(1)'001'>>> "{0:03d}".format(10)'010'> ...
- Python中str.format()字典及list传入详解
- python开发_python中str.format()
格式化一个字符串的输出结果,我们在很多地方都可以看到,如:c/c++中都有见过 下面看看python中的字符串格式函数str.format(): 1 #使用str.format()函数 2 3 #使用 ...
- python中的printf:%号拼接字符串和format函数
在C语言中,我们使用printf("%s","hello")这种形式进行字符串的拼接 在python中,进行这样的拼接有两种实现方式,分别是%号拼接以及使用fo ...
随机推荐
- QDir的mkdir和mkpath区别
mkdir:上层目录不存在时,创建会失败.比如创建“c:\\test\test”,如果test不存在,那test也创建不了.目录已经存在时会返回false. mkpath:上层目录不存在也没关系,自动 ...
- 一道经典JS题(关于this)
项目中碰到的问题,以前也碰到过,没有重视,现记录如下. <input type='button' value='click me' id='btn' /> <script> v ...
- 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)
在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建 ...
- 匈牙利算法(codevs2776)
type node=^link; link=record des:longint; next:node; end; var n,m,i,t,num:longint; p:node; nd:..] of ...
- yii2权限控制rbac之详细操作步骤
本篇的主题是 rbac权限控制的详细操作步骤,注意是操作步骤哦,关于配置与rbac的搭建,我们在博文 yii2搭建完美后台并实现rbac权限控制实例教程说的再清楚不过了. 但是,在很多人的反馈下,说是 ...
- 访问HTML元素(节点)
访问HTML元素等同于访问节点,能够以不同的 方式来访问HTML元素: 通过使用 getElementById() 方法 通过使用 getElementsByTagName() 方法 通过使用 get ...
- Android ListView 详解
我做Android已经有一段时间了,想想之前在学习Android基础知识的时候看到了许许多多博主的博文 和许多的论坛.网站.那时候就非常感谢那些博主们能吧自己的知识分享在互联网上,那时候我就想 如果我 ...
- 【Quartz】Quartz的搭建、应用(单独使用Quartz)
Quartz在Java构建的系统中,是十分常用的定时任务框架. 本文,记录.介绍Quartz的简单入门的单独搭建(此文入门学习Quartz为主,并非基于Spring托管形式). > 参考的优秀资 ...
- extjs的一些简单动画1
Ext.Element 类也定义了部分动画函数.我们先来看看Ext.Fx 类中的重要方法. 1.slideIn ( [String anchor], [Object options] ): 功能:滑入 ...
- AndroidStudio修改项目名称
项目名称修改了,想修改Android Studio 中 project的名字 右键project 的名字,refactor - rename ,填写好新名字后修改,被提示 “can’t rename ...