%和format的区别
在python中字符串的格式化分为两种:%和format。那么我们在什么时候来使用它们呢?它们有什么区别呢?
举个例子:我们根据一个坐标来表示一个动作
#定义一个坐标
point = (250,250)
#使用%来格式化
s = '朝着敌人的坐标%s开炮'%point
print(s) #直接报错
#TypeError: not all arguments converted during string formatting #将s改为如下就不会报错了
s = '朝着敌人的坐标%s开炮'%(point,)
print(s) # 不报错
同样的我们使用format就不会出现这样的问题:
#使用format格式化
s = '朝着敌人的坐标{}开炮'.format(point)
print(s) # 正常输出
由此可见:format比%的功能更强。
下面我们来对format的用法进行简单的了解
1.直接f+string
在python3.6以后,加入了一个新特性:f-strings
#我们定义两个变量 name age
name = 'snow'
age = 18
s = f'我叫{name},今年{age}岁'
print(s)
可以直接在字符串的前面加上f来格式化字符串,更简单。
2 通过位置
#我们也可以通过索引来直接用 使用*将列表打散,通过索引来取值
s1 = '我叫{0},今年{1}岁,喜欢{2}'.format(*l1)
print(s1)
3 通过关键字
#也可以通过**将字典打散,通过key来取值
d = {'name':'shine','age':20,'hobby':'music'}
s2 = 'my name is {name},i am {age} years old , i like {hobby}'.format(**d)
print(s2)
4.通过对象属性
#在类中,我们可以自定义__str__方法来实现特定的输出
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return 'Name:{self.name} Age:{self.age}'.format(self = self) # 我们可以将self传入{}中
person = Person('sun',22)
print(person)
5.通过下标
#我们可以利用下标+索引
l1 = ['zhe','','Teacher']
s4 = 'I am a {0[2]},my name is {0[0]},{0[1]} years old'.format(l1)
print(s4)
6. 填充与对齐
s = '{:>10}'.format('') #>后面的10 表示总共多少字符,10个字符,18占两个,剩余的用空格填充
print(s) # 18 :后面带填充的字符,默认为空
s1 = "{:0>10}".format('')
print(s1) #
s2 = '{:*>10}'.format('18是否')
print(s2) #******18是否
备注:Python 字符串中的zfill()方法: 返回指定长度的字符串,原字符串右对齐,前面填充0。
s = '演员'
ret = s.zfill(10)
print(ret)
7. 精度与类型f
num = 2.13658
print('{:.2f}'.format(num)) #2.14 四舍五入取固定位数的小数 其中.2表示长度为2的精度 num = 3
print('{:.2f}'.format(num)) #3.00 对于整数直接在保留固定位的小数位
8. 其他进制

In[1]: "{:b}".format(18) # 取18的二进制
Out[1]: '10010'
In[2]: "{:d}".format(18) # 取18的十进制
Out[2]: '18'
In[3]: "{:o}".format(18) # 取18的八进制
Out[3]: '22'
In[4]: "{:x}".format(18) # 取18的十六进制
Out[4]: '12'

9. 千位分隔符
{:,}.format 中 冒号加逗号 表示可以将一个数字三位三位的用逗号分隔
In[1]: "{:,}".format(1234567890)
Out[1]: '1,234,567,890'
%和format的区别的更多相关文章
- SimpleDateFormat中parse和format的区别
parse()返回的是一个Date类型数据,format返回的是一个StringBuffer类型的数据 //SimpleDateFormat中的parse方法可以 //把String型的字符串转换成特 ...
- Python2.6与Python2.7的format用法区别
Python2.6不支持format(123456L, ",")或format(123, ",")的format用法,会报下面的错误 ValueError: U ...
- python3 开发面试题(%s和format的区别)5.31
在格式化字符串中有两种方法: 1.%s 2.format 大家常用的是哪一种方法?为什么要用你选的这种方法? 我们先看一个例子: 首先我们定义一个我军需要击杀的恐怖分子的地理坐标为 c=(128,12 ...
- C# string.Format 和 String.Format 的区别
string.Format 和 String.Format ,不论是用法还是意思,都是一样的 怎么使用? 通过 占位符来替换 ,类似于 Replace 的操作 string s = string.F ...
- 使用printf和String.format格式化输出
格式化输出 在哪些情况下使用格式化输出: 异常打印到日志中使用格式化输出有利于排查错误原因: printf格式化 示例: public class PrintfTest { public static ...
- YUV和RGB格式分析
做嵌入式项目的时候,涉及到YUV视频格式到RGB图像的转换,虽然之前有接触到RGB到都是基于opencv的处理,很多东西并不需要我们过多深入的去探讨,现在需要完全抛弃现有的算法程序,需要从内存中一个字 ...
- python笔试题(1)
为了充实自己,小编决定上传自己见到的笔试题和面试题.可能要写好长时间,一时半会写不了多少,只能说遇到多少写多少吧,但是只要小编有时间,会持续上传(但是答案却不能保证,所以有看到错误的及 ...
- APNS导致消息丢失和发送效率原因
http://blog.csdn.net/tlq1988/article/details/9612237 首先说明一下,本文只是介绍一些容易被开发者忽视,而导致性能低下问题.并不是介绍如何向苹果设备成 ...
- YUV和RGB格式分析【转】
转自:http://www.cnblogs.com/silence-hust/p/4465354.html 做嵌入式项目的时候,涉及到YUV视频格式到RGB图像的转换,虽然之前有接触到RGB到都是基于 ...
随机推荐
- 【树形DP】【UVA10859】 Placing Lampposts
传送门 Description 给定一个\(n\)个点\(m\)条边的无向无环图,选择尽量少的节点,使得所有边都至少有一个顶点被选择.在这个基础上,要求有两个顶点被选择的边数尽可能大 Input 多组 ...
- Java API不能远程访问linux服务器HBase的问题
今天我在虚拟机里面安装了Hbase 1.2.4,说在windows上Java API调用访问下玩玩,结果始终连接不上. 现象是启动程序后,程序出现卡死的状态,没报错也不停止,大约半分钟后才打印一堆日志 ...
- cuda环境下安装opencv出现nvcc warning : The 'compute_11'
警告打印: nvcc warning : The 'compute_11', 'compute_12', 'compute_13', 'sm_11', 'sm_12', and 'sm_13' arc ...
- Codeforces Round #307 (Div. 2) D 矩阵快速幂+快速幂
D. GukiZ and Binary Operations time limit per test 1 second memory limit per test 256 megabytes inpu ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)
C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...
- Aidl实现进程间通信,跨进程回调
aidl支持的文件类型 1. Java 编程语言中的基本类型, 如 int.long.boolean 等, 不需要 import. 2. String.List.Map 和 CharSequence, ...
- Idrac6 to manage dell server
最近idrac6挂了,java已经升级了 1.安装firefox浏览器,只有火狐是支持idrac最好的 2.安装JDK 3.配置configure java, 4.添加security,edit si ...
- 51nod 1284 2 3 5 7的倍数 | 容斥原理
用容斥原理求出不满足条件的个数cnt,然后用n-cnt就得到答案了. 这里不满条件的数就是能整除2,3,5,7这些数的集合并集.要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去 ...
- vijos 1464 积木游戏 DP
描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,…,N的长方体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&qu ...
- [洛谷P3629] [APIO2010]巡逻
洛谷题目链接:[APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以 ...