微信商城与网站一体,网页设计课程总结500字,2018年怎样做淘宝客网站,电商网站建设与维护试题Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’
一、%号占位符
这是一种引入最早的一种#xff0c;也是比较容易理解的一种方式.使用方式为#xff1a;
1、格式化字符串中变化的部分使用占位符 2、…Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’
一、%号占位符
这是一种引入最早的一种也是比较容易理解的一种方式.使用方式为
1、格式化字符串中变化的部分使用占位符 2、变量以元组形式提供 3、变量与格式化字符串之间以%连接
1、格式的字符串即%s与被格式化的字符串即传入的值必须按照位置一一对应
ps当需格式化的字符串过多时位置极容易搞混
例如
a zhangsan
b lisi
print(%s eated %s % (a, b)) # zhangsan eated lisi
print(%s asked %s to do something % (zhangsan, lisi)) # zhangsan asked lisi to do something2、可以通过字典方式格式化打破了位置带来的限制与困扰
print(我的名字是%(name)s我的年龄是%(age)s % {name: zhangsan, age: list}) # 我的名字是zhangsan我的年龄是listkwargs {name: zhangsan, age: 18}
print(my name is %(name)s, my age is %(age)s % kwargs) # my name is zhangsan, my age is 18二、str.format 内建函数
该format函数是在python2.6以后引入的是字符吕类型的内置方法。因为str.format的方式 比%在性能和灵活性上更好一些。
1、使用位置参数
按照位置一一对应
print({} and {} is good friedng.format(zhangsan, lisi)) # zhangsan and lisi is good friedng2、使用索引
使用索引取对应位置的值
print({0}{0}{1}{0}.format(哈哈, 隔)) # 哈哈哈哈隔哈哈3、使用关键字参数or字典
可以通过关键字or字典方式的方式格式化打破了位置带来的限制与困扰
print(我的名字是 {name}, 我的年龄是 {age}..format(age18, nameegon))kwargs {name: egon, age: 18}
print(my name is {name}, my age is {age}.format(age18, namezhangsan))kwargs {name: zhangsan, age: 18}
print(my name is {name}, my age is {age}.format(**kwargs)) # 使用**进行解包操作4、填充与格式化
先取到值然后在冒号后面设定填充格式[填充字符][对齐方式][宽度] 20: 意思是 左对齐总共20个字符不足部分用号填充
print(my name is {0:*20},my age is {1:*10}.format(zhangsan,18)) # my name is zhangsan************,my age is 18********# *10: 右对齐总共10个字符不足部分用*填充
print(my name is {0:*10}.format(zhangsan)) # my name is zhangsan**# *^10: 居中总共18个字符不足部分用*填充
print(my name is {0:*^18}.format(zhangsan)) # my name is *****zhangsan*****# ^20: 居中总共20个字符不足部分用空白填充
print(my name is {0:^20}.format(zhangsan)) # my name is zhangsan5、精度与进制
print({salary:.2f}.format(salary123456.1234567)) # 123456.12精确到小数点后3位四舍五入
print({salary:.10f}.format(salary123456.1234567)) # 123456.1234567890精确到小数点后3位四舍五入
print({:-^10.2f}.format(3.1415926)) # ---3.14--- 取2位小数后居中共10位其余用-填充
print({0:b}.format(123)) # 1111011 转成二进制
print({0:o}.format(123)) # 173 转成八进制
print({0:x}.format(123)) # 7b 转成十六进制
print({0:,}.format(1234567)) # 1,234,567 千分位格式化三、f-Strings
由python3.6版本引入的一个特性称之为字面量格式化字符串 以F或者f开头后面跟字符串字符串中的表达式用大括号{}包起来它会将变量或表达式计算后的值替换进去
f-string是以f或F开头的字符串 核心在于字符串中符号{}的使用
1、{}中可以是变量名
name ‘zhangsan’ print(fmy name is {name}) # my name is zhangsan
2 、{}中可以是表达式
可以在{}中放置任意合法的表达式会在运行时计算
print(f{3 * 3 / 2}) # 4.5a 1
b 2
print(fa b {a b}) # a b 3比如 函数的调用
name zhangsan
print(Fmy name is {name.upper()}) # my name is ZHANGSANdef foo(n):print(zhangsan is beautifull)return nprint(F{foo(10)}) # 10 执行时打印函数的返回值# 在{}中使用‘或者” 保证{}内外使用的不一样即可如下
print(Ftest {str}) # teststr
print(Ftest {str}) # teststr# 在{}中需要同时使用’和“则需要外部字符串使用文档字符串符号’‘’或者”“”
name zhangsan
print(Fits name is {name} ) # its name is zhangsan 注意各个’‘’是不一样的
print(F{{}}) # 输出{} 注意两种引号不一样# {}中不允许出现\即使作为函数参数必须使用的话可以将包含\的内容放到一个变量里如下
a zhangsan
b fmy name is {a:-^10}
print(b) # my name is -zhangsan-# a fprint the {\t}
# print(a) # 语法错误a \n
print(Fprint the {a}) # print the \n没有显示 但打印正常# f.str 格式可用于多行字符串有两种方式使用连接符\ 和使用doc签字串。如下
name zhangsan
age 18res fmy name is {name}, \Fmy age is {age}, \Fand im happyprint(res) # my name is zhangsan ,my age is 18,and im happyres fmy name is {name} ,my age is {age},and im happy,
my name is {name} ,my age is {age},and im happy
my name is {name} ,my age is {age},and im happy
my name is {name} ,my age is {age},and im happyprint(res) # 输出4行文本四、string模块的template
这是string模块提供的一个模版类默认使用$ 或者 ${}建议用这个来占位而不是用% 具体用法如下
from string import Templates hi ${name}
res Template(s).substitute(namezhangsan) # substitute替代品的意思
print(res) # hi zhangsan# 当需要输出一个$符号时可以使用$$
s1 f{name}‘s salary is $$1000
res Template(s1).substitute(namezhangsan)
print(res)# Template还有一个safe_substitute函数
# 当格式化字符串中有变量未给出值时此函数将占位符当成字符串输出
# 而substitute会报错name zhangsan# s2 f{name} and {name2}‘s salary is $$1000
# res Template(s2).substitute()
# print(res) # 报错NameError: name name2 is not defined
#学习中遇到问题没人解答小编创建了一个Python学习交流群725638078s3 hi ${apple}, ${peach}
res Template(s3).safe_substitute(appleapple)
print(res) # hi apple, ${peach}五、总结四种方式的应用场景
性能对比
from timeit import timeitdef test_s():name zhangsanage 18return %s:%s % (name, age)def test_format():name zhangsanage 18return {}:{}.format(name, age)def test_f():name zhangsanage 18return f{name}:{age}def test_t():return Template({name}:{age}).substitute(namezhangsan, age18)res1 timeit(test_s, number 100000)
res2 timeit(test_format, number 100000)
res3 timeit(test_f, number 100000)
res4 timeit(test_t, number 100000)
print(res1) # 0.027567900004214607
print(res2) # 0.03230700000131037
print(res3) # 0.020800700003746897
print(res4) # 0.0893696999992244看效率表现还是 最新的f.str最快