-
2022-01-03 21:49:13
1.格式化字符串写法
废话不多说,直接上代码
def str_format(): context1 = '''there is a person, name: %s, age: %d, salary: %d''' %("lucy", 18, 2000) context2 = '''there is a person, name: %(name)s, age: %(age)d, salary: %(salary)d''' %dict(name="lili",age=19, salary=3000) context3 = '''there is a person, name: {0}, age: {1}, salary: {2}'''.format("koko", 20, 4000) # 3.6以后的版本,推荐使用 name, age, salary = "hanmeimei", 16, 6000 context4 = f'''there is a person, name is {name}, age is: {age}, salary is: {salary}''' print(context1) print(context2) print(context3) print(context4)
代码输出
there is a person, name: lucy, age: 18, salary: 2000 there is a person, name: lili, age: 19, salary: 3000 there is a person, name: koko, age: 20, salary: 4000 there is a person, name is hanmeimei, age is: 16, salary is: 6000
f-string, formatted string literals,是python 3.6以后引入的操作。在此之前,格式化字符串常用的方法为%格式化与str.format()的方法。
而采用f-string方法,好处主要如下:
1.操作更加直观:{}标明直接被替换的变量。
2.操作更加简单:直接在字符串前面加上f即可。
3.性能也要更优于传统的格式化方法。更多相关内容 -
Python中格式化字符串的四种实现
2021-01-19 23:59:18因此,本文将先总结如何通过%运算符来格式化字符串,同时指出这种方式的缺点,然后带你了解Python中另外三种强大的格式化字符串的方式:str.format()、f-string以及模板字符串,并给出在何时选择何种方式的建议。... -
使用Python将字符串转换为格式化的日期时间字符串
2020-09-18 16:55:17主要介绍了使用Python将字符串转换为格式化的日期时间字符串,需要的朋友可以参考下 -
python3格式化字符串 f-string的高级用法(推荐)
2020-09-17 19:00:52从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!本文重点给大家介绍python3格式化字符串 f-string的高级用法,一起看看吧 -
python格式化字符串
2022-03-09 16:28:47Python字符串的格式化处理主要是用来将变量(对象)的值填充到字符串中,在字符串中解析Python表达式,对字符串进行格式化显示(左对齐、右对齐、居中对齐,保留数字有效位数)。 使用占位符格式化字符串: 常见的...目录
格式化字符串是什么?
Python字符串的格式化处理主要是用来将变量(对象)的值填充到字符串中,在字符串中解析Python表达式,对字符串进行格式化显示(左对齐、右对齐、居中对齐,保留数字有效位数)。
1.使用占位符格式化字符串:
使用占位符格式化输出时:在%后面加数字表示给这个字符多少个位置,不足电脑会自动使用空格补齐。正数表示左对齐,负数表示右对齐。如:%4d表示左对齐一共占4的位置,%-8d表示右对齐一共占8个位置
占位符:
- %s :字符串的格式化,也是最常用的
- %d :格式化整数,也比较常用
- %c :格式化字符及ASCII码
- %f :格式化浮点数,可以指定小数后面的精度,默认是小数点6位
- %o :格式化无符号八进制数
- %x :格式化无符号十六进制数
- %e : 将整数、浮点数转换成科学计数法
- %%: 当字符串中存在格式化标志时,需要用 %%表示一个百分号;
例子:
占位符%s、%c、%%的使用:
name='小明' print('%s的使用:') print('我的名字叫%s!'%(name)) print('我的名字叫%4s!'%(name)) #右对齐 print('我的名字叫%-4s!'%(name)) #左对应 #由于在python中只有字符串这种类型,使用在这里%c只能表示ASCII码,并不能表示字符 character=56 print('c的使用:') print('%d在ASCII码中表示字母%c'%(character,character)) schedule=99 print('%%的使用:') print('当前下载进度为%d%%!'%(character))
由于在python中只有字符串这种类型,所以在python中%c只能表示ASCII码,并不能表示字符 !
占位符%d、%o、%x的使用:
number=18 print('%d使用十进制为:%d'%(number,number)) #十进制 print('%d使用八进制为:%o'%(number,number)) #八进制 print('%d使用十六进制为:%x'%(number,number)) #十六进制
如果在表示八进制或者十六进制时想显示各进制的前缀时,在%后面加一个#就好:
number=200 print('%d使用八进制为:%#o'%(number,number)) print('%d使用十六进制为:%#x'%(number,number))
占位符 %f、%e的使用:
high=174.5 print('我的身高有%f米'%(high)) #默认情况 print('我的身高有%.1f米'%(high)) #小数点保留1位 print('%f使用科学记数法为:%e'%(high,high))
2.使用format方法格式化输出:
1.不设置指定位置:
name = "{}在{}玩了一天的{}" data = name.format("小明","网吧","LOL") print(data)
2.设置指定名称:
name = "{name}在{Location}玩了一天的{game}" data = name.format(Location="网吧",game="LOL",name="小明") print(data)
3.设置指定位置 :
name = "{2}在{0}玩了一天的{1}" data = name.format("网吧","LOL","小明",) print(data)
注意:指定位置是从0开始算起,而不是1!
-
Python字符串格式化
2020-12-24 13:45:12在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输入输出。Python中内置有对字符串进行格式化的操作%。 模板 格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式... -
Python中字符串的格式化
2022-02-27 20:20:49python中字符串的格式化,宽度、精度以及对齐方式1.三种常用格式化字符串方式
1.%作占位符
name = '张三' age = 10 print('姓名%s,今年%d' % (name, age)) # 运行结果:姓名张三,今年10
%占位符,s和d表示填充的数据类型,顺序应与%后括号中的数据变量顺序一致
2.使用format()
name = '张三' age = 10 print('姓名{0},今年{1}岁'.format(name, age)) # 运行结果:姓名张三,今年10岁
{}为占位符,0表示format参数中第一个数据变量 依次类推
3.使用 f 格式化
name = '张三' age = 10 print(f'姓名{name},今年{age}岁') # 运行结果:姓名张三,今年10岁
字符串前要加 f 字符串中 {数据变量名} 才能生效
2.字符串宽度和精度的写法
1.%填充符表示法
# 宽度为10 运行结果: 80 print('%10d' % 80) # 保留三位小数运行结果:3.142 print('%.3f' % 3.14159) # 保留三位小数,宽度为10 运行结果: 3.142 print('%10.3f' % 3.1415926)
10为宽度 .3f 为保留三位小数 d为转化前元素数据类型
注意:如果% 后有多个数据元素,只对第一个数据元素进行格式化2. format()表示法
# .3表示一共三个数 运行结果:3.14 print('{0:.3}'.format(3.14159)) # .3f表示三位小数 运行结果:3.142 print('{0:.3f}'.format(3.14159)) # 宽度为10 保留三位小数 运行结果: 3.142 print('{0:10.3f}'.format(3.14159)) # 0是占位符的顺序, 可以省略 默认为0
例如:
# 运行结果: 256.354 print('{1:10.3f}'.format(3.14159, 256.354)) # 1表示占位符 即format()中参数的顺序,从0开始 1就是第二个数据元素 -> 256.354 # 10表示格式化后数据元素的宽度 # .3f表示精度保留三位小数
3.字符串对齐方式
1.center() 居中对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是选填的,默认是空格,如果设置宽度小于实际宽度则则返回原字符串
s = 'hello,python' print(s.center(20, '*')) # 运行结果:****hello,python****
2.ljust() 左对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是选填的,默认是空格,如果设置宽度小于实际宽度则则返回原字符串
s = 'hello,python' print(s.ljust(20)) # 运行结果:hello,python print(s.ljust(20, '*')) # 运行结果:hello,python******** print(s.ljust(10)) # 运行结果:hello,python
3.rjust() 右对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是选填的,默认是空格,如果设置宽度小于实际宽度则则返回原字符串
s = 'hello,python' print(s.rjust(20)) # 运行结果: hello, python print(s.rjust(20, '*')) # 运行结果:********hello,python print(s.rjust(10)) # 运行结果:hello,python
4.zfill() 右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身
s = 'hello,python' print(s.zfill(20)) # 运行结果:00000000hello,python print(s.zfill(10)) # 运行结果:hello,python
-
Python字符串三种格式化输出
2020-12-16 20:33:54python2.6版本之前,使用%格式化字符串沿用的是C语言的输出格式。 使用说明: print(“格式化字符串” % 变量) #变量超过2个使用元组格式: print(“格式化字符串” % (变量1,变量2)) 使用%占位符表示字符串中... -
Python格式化字符串的4种方式
2021-04-01 17:52:01文章目录Python格式化字符串的4种方式一:%号二:str.format三:f-Strings四:标准库模板五:总结四种方式的应用场景 Python格式化字符串的4种方式 一:%号 %号格式化字符串的方式从Python诞生之初就已经存在时至...Python格式化字符串的4种方式
一:%号
%号格式化字符串的方式从Python诞生之初就已经存在时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。
# 1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应 # ps:当需格式化的字符串过多时,位置极容易搞混 print('%s asked %s to do something' % ('egon', 'lili')) # egon asked lili to do something print('%s asked %s to do something' % ('lili', 'egon')) # lili asked egon to do something # 2、可以通过字典方式格式化,打破了位置带来的限制与困扰 print('我的名字是 %(name)s, 我的年龄是 %(age)s.' % {'name': 'egon', 'age': 18}) kwargs={'name': 'egon', 'age': 18} print('我的名字是 %(name)s, 我的年龄是 %(age)s.' % kwargs)
二:str.format
该
format
方法是在Python 2.6中引入的,是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹,所以推荐使用- 使用位置参数
# 按照位置一一对应 print('{} asked {} to do something'.format('egon', 'lili')) # egon asked lili to do something print('{} asked {} to do something'.format('lili', 'egon')) # lili asked egon to do something
- 使用索引
# 使用索引取对应位置的值 print('{0}{0}{1}{0}'.format('x','y')) # xxyx
- 使用关键字参数or字典
# 可以通过关键字or字典方式的方式格式化,打破了位置带来的限制与困扰 print('我的名字是 {name}, 我的年龄是 {age}.'.format(age=18, name='egon')) kwargs = {'name': 'egon', 'age': 18} print('我的名字是 {name}, 我的年龄是 {age}.'.format(**kwargs)) # 使用**进行解包操作
- 填充与格式化
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度] # *<10:左对齐,总共10个字符,不够的用*号填充 print('{0:*<10}'.format('开始执行')) # 开始执行****** # *>10:右对齐,总共10个字符,不够的用*号填充 print('{0:*>10}'.format('开始执行')) # ******开始执行 # *^10:居中显示,总共10个字符,不够的用*号填充 print('{0:*^10}'.format('开始执行')) # ***开始执行***
- 精度与进制
print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124 print('{0:b}'.format(123)) # 转成二进制,结果为:1111011 print('{0:o}'.format(9)) # 转成八进制,结果为:11 print('{0:x}'.format(15)) # 转成十六进制,结果为:f print('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931
三:f-Strings
str.format()
比%
格式化高级了一些,但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。与在Python 3.6中引入 了f-strings,不仅比str.format更简洁,性能上也更胜一筹f
-
string是以f或F开头的字符串, 核心在于字符串中符号{}的使用- {}中可以是变量名
name = 'egon' age = 18 print(f'{name} {age}') # egon 18 print(F'{age} {name}') # 18 egon
- {}中可以是表达式
# 可以在{}中放置任意合法的Python表达式,会在运行时计算 # 比如:数学表达式 print(f'{3*3/2}') # 4.5 # 比如:函数的调用 def foo(n): print('foo say hello') return n print(f'{foo(10)}') # 会调用foo(10),然后打印其返回值 # 比如:调用对象的方法 name='EGON' print(f'{name.lower()}') # egon
- 在类中的使用
>>> class Person(object): ... def __init__(self, name, age): ... self.name = name ... self.age = age ... def __str__(self): ... return f'{self.name}:{self.age}' ... def __repr__(self): ... return f'===>{self.name}:{self.age}<===' ... >>> >>> obj=Person('egon',18) >>> print(obj) # 触发__str__ egon:18 >>> obj # 触发__repr__ ===>egon:18<=== >>> >>> >>> >>> # 在f-Strings中的使用 >>> f'{obj}' # 触发__str__ 'egon:18' >>> f'{obj!r}' # 触发__repr__ '===>egon:18<==='
- 多行f-Stings
# 当格式化字符串过长时,如下列表info name = 'Egon' age = 18 gender = 'male' hobbie1='play' hobbie2='music' hobbie3='read' info = [f'名字:{name}年龄:{age}性别:{gender}',f'第一个爱好:{hobbie1}第二个爱好:{hobbie2}第三个爱好:{hobbie3}'] # 我们可以回车分隔到多行,注意每行前都有一个f info = [ # 第一个元素 f'名字:{name}' f'年龄:{age}' f'性别:{gender}', # 第二个元素 f'第一个爱好:{hobbie1}' f'第二个爱好:{hobbie2}' f'第三个爱好:{hobbie3}' ] print(info) # ['名字:Egon年龄:18性别:male', '第一个爱好:play第二个爱好:music第三个爱好:read']
- 引号的嵌套
# 当字符串嵌套发送冲突时,与正常的字符串处理方式是一样的 # 1、外层为单引号,内层嵌套也为单引号,并且想要输入的内容也为单引号,那么外层需要改用双引号 print("my name is 'egon'") # 2、外层为单引号,内层嵌套也为单引号,并且想要输入的内容也为单引号,需要用到转义 print('my name is \'egon\'')
- 注意
#1、反斜杠可以用来进行字符转义,但不能用在{}的表达式中 f'{1\2}' # 语法错误 #2、注释#号也不能出现在{}的表达式中 f'{x#}' # 语法错误
- 括号的处理
基于3.5我们得知,不能在{}内出现反斜杠\,所以,当我们的输出的结果中需要包含{}时,下面的做法就是错误的
print(f'\{天王盖地虎\}')
类似于输出%号的做法
>>> print('%s%%' %30) 30%
若想输出{},那么需要在原有的基础上再套一层,如下
print(f'{{天王盖地虎}}') # {天王盖地虎} print(f'{{{{天王盖地虎}}}}') # {{天王盖地虎}}
性能对比=>f_Stings性能最高
from timeit import timeit def test_s(): name = 'Egon' age = 18 return '%s:%s.' % (name, age) def test_format(): name = 'Egon' age = 18 return '{}:{}.'.format(name, age) def test_f_strings(): name = 'Egon' age = 18 return f'{name}:{age}.' res1 = timeit(test_s, number=1000000) res2 = timeit(test_format, number=1000000) res3 = timeit(test_f_strings, number=1000000) print(res1) # 0.3709844550030539 print(res2) # 0.47834375899401493 print(res3) # 0.3111891380031011, 最快
四:标准库模板
从Python 2.4起,Python标准库string引入了Template也可以用来格式化字符串,所以说,与前三种方式的一个显著区别就是:Template并属于python语言的核心语法特征,使用方式如下
from string import Template name='EGON' t = Template('Hello $name!') res=t.substitute(name=name) print(res) # Hello EGON!
另外一个不同的地方是这个模板字符串不支持类似str.format那样的进制转换,需要我们自己处理
from string import Template name='EGON' templ_string = 'Hello $name, there is a $error error!!!' res=Template(templ_string).substitute(name=name, error=hex(12345)) print(res) # Hello EGON, there is a 0x3039 error!!!
使用模板字符串Template的最佳的时机就是当你的程序需要处理由用户提供的输入内容时。模板字符串是最保险的选择,因为可以降低复杂性。
其他一些复杂的字符串格式化技巧的可能会给你的程序带来安全漏洞
五:总结四种方式的应用场景
-
如果格式化的字符串是由用户输入的,那么基于安全性考虑,推荐使用Template
-
如果使用的python3.6+版本的解释器,推荐使用f-Stings
-
如果要兼容python2.x版本的python解释器,推荐使用str.format
-
如果不是测试的代码,不推荐使用%
-
python格式化字符串实例总结
2020-12-24 05:23:58本文实例总结了python格式化字符串的方法,分享给大家供大家参考。具体分析如下: 将python字符串格式化方法以例子的形式表述如下: * 定义宽度 Python代码如下: >>>'%*s' %(5,'some') ' some' – 左对齐 Python... -
【Python】Python的三种格式化字符串的方法
2022-02-19 21:59:15简单介绍Python的三种格式化字符串的方法,C语言风格的%方法,str.format方法,Python3.6版本新推出的{变量名称}方法。 -
Python几种基本的字符串格式化方法
2022-01-31 15:11:14# %s 字符串 # %d 十进制有符号整数 # %u 十进制无符号正数 # %o 八进制无符号数 # %x 十六进制无符号数 # %X 十六进制无符号数,大写字母 # %e 浮点数科学计数法 # %E 浮点数科学计数法,大写E # -
python 时间格式化字符串
2022-03-16 09:23:50格式化字符串有很多种,这里是我感觉非常简单的方法 获得当前时间 #导包 import datatime datetime.datetime.now() 输出: 2022-03-16 09:22:07.525978 格式化当前时间 datetime.datetime.now().strftime("%Y-%m-%d ... -
浅析Python 中几种字符串格式化方法及其比较
2020-09-19 04:26:49在 Python 中,提供了很多种字符串格式化的方式,分别是 %-formatting、str.format 和 f-string 。这篇文章主要介绍了Python 中几种字符串格式化方法及其比较,需要的朋友可以参考下 -
python-格式化字符串
2020-12-11 03:17:41python格式化字符串有两种方式:1、百分号形式(%):默认右对齐 "-"表示多对齐常用的类型码: s -->字符串 d---->数字 f--->浮点数%s %d %d%[+-宽度.精度]类型码 #精度,就是小数点后保留的位数,默认是6位2... -
python字符串格式化什么意思
2020-12-22 13:13:35python字符串格式化什么意思python字符串格式化的意思就是用format函数格式化字符串的用法。 用法:它通过{}和:来代替传统%方式。使用位置参数 要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要... -
Python字符串格式化的3种方法
2022-02-19 16:50:47将字符串中的一部分替换为具备某种格式的变量,称为字符串的格式化。 1. 使用%占位符 >>>age = 23 >>>name = 'tom' >>>'Happy birthday %d, %s!'%(age, name) 占位符 ... -
Python 字符串格式化方法
2022-01-24 16:09:171.使用format(arg)方法 将字符串中用 {} 定义的替换域依次用参数arg中的数字替换 In[1]: 'hello,{}'.format('world!') Out[1]:'hello,world!' ...In[2]: '{},{},{}'.format(1,2,4...格式化字符串%(参数1,参数2...... -
Python常见格式化字符串方法小结【百分号与format方法】
2020-09-21 12:52:24主要介绍了Python常见格式化字符串方法,结合实例形式分析了百分号方法和format函数进行字符串格式化的具体使用技巧,需要的朋友可以参考下 -
python格式化字符串的三种方法(%,format,f-string)
2019-07-18 23:25:51到目前为止,我所知道的,python格式化字符串有三种方法,第一是早期就有的%,其次是2.5之后的format(),还有就是3.6添加的f字符串调试 7.1 %格式化字符串 %格式化字符串是python最早的,也是能兼容所有版本的一种... -
Python格式化字符串的两种方式
2020-12-07 15:19:46你 xx 月的话费是 xx,余额是 xx ’ 之类的字符串,而 xxx 的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。 一、% 在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下: >>... -
Python实现字符串格式化输出的方法详解
2020-12-25 06:33:16本文实例讲述了Python实现字符串格式化输出的方法。分享给大家供大家参考,具体如下: python属于强类型的语言,如果像java一样操作字符串和数字的“+”时,会出现TypeError。而python的格式化方法有多种,比如使用... -
Python字符串格式化输出方法分析
2021-01-20 04:46:28本文实例分析了Python字符串格式化输出方法。分享给大家供大家参考,具体如下: ...3 字典格式化字符串 m = 'python' astr = i love %(python)s % {'python':m} print astr 大家可以根据自己的实际情况来选择合适的方 -
Python的三种字符串格式化方法
2020-08-11 19:25:00Python的三种字符串格式化...格式化字符串 %d 格式化整数 %u 格式化无符号整数 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大写) %f 格式化浮点数,可指定小数点后精 -
python的三种字符串格式化方法
2017-08-11 20:29:56刚入门python的同学,特别是,没有系统的学习过python,而是学过别的语言,直接上手python的同学,怕是还不是很了解python强大的字符串格式化方法 1.最方便的 print 'hello %s and %s' % ('df', 'another df') 但是... -
python字符串格式化深入详解(四种方法)
2020-04-21 11:05:11前言:本文详细整理了python字符串格式化的几种方式。 一、使用 % 符号来进行格式化 格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下: %s 字符串 (采用str()... -
python格式化时间字符串
2018-03-09 10:22:25python格式化各种形式的时间字符串,输出标准格式XXXX-XX-XX XX:XX:XX。 -
Python3中的f-Strings增强版字符串格式化方法
2020-12-20 09:12:39在Python3.6之前,主要有两种方式格式化字符串:%-格式化 和 str.format()。下面我们先了解它们的用法以及局限性。 1.1 %-格式化 这时Python的官方字符串格式化方法,从语言开始时就存在。官方文档明确提出不建议... -
Python格式化字符串f-string常用用法
2022-02-23 19:53:13Python格式化字符串f-string常用用法 简介: f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,...