目录
格式化字符串:按指定的规则连接字符串或输出其他变量并返回新的字符串
1.%-formatting
name='gyf'
age='22'
s='hello,%S,you are %s' % (name,age)
print(s)
当使用多个参数和更长的字符串,代码会冗长且容易导致错误
2.str.format()
使用str.format()
,替换字段用花括号标记
#1
name='gyf'
age=22
s2='hello,{},you are {}'.format(name,age)
print(s2)
#2
#通过索引来以任何顺序引用变量
name='gyf'
age=22
s2='hello,{1},you are {0}'.format(age,name)
print(s2)
小心:ste.format()功能之一是您可以将位置和关键字参数都设置为字符串格式,并且可以随时明确地对项目进行重新排序。但是,更大的功能是可以访问对象的属性和项目。后者是导致此问题的原因。本质上,人们可以做以下事情:
'''前置条件
'''
>>> class user:
def __init__(self,name,account,password):
self.name = name
self.account = account
self.password = password
>>> gyf = user('guoyunfei','2019@qq.com','123456')
'''访问对象内部属性
'''
>>> "{0.name},{0.account},{0.password}".format(gyf)
'guoyunfei,2019@qq.com,123456'
本质上:控制格式字符串的任何人都可以访问对象的潜在内部属性。
3.f-Strings
f-Strings也被称为“格式化字符串文本”,f-strings是字符串文本,在开头有一个f,大括号包含将被其值替换的表达式。表达式在运行时求值,然后使用“格式”协议格式化。
#1
name='gyf'
age=22
s3=f"hello,{name},you are {age}"
print(s3)
#2
#嵌入任意Python表达式
s3=f"your age is {2019-1997}"
print(s3)
4.Template Strings (标准库)
标准库是Python安装时默认自带的库
Template需要从Python的内置string
模块导入该类,模板字符串不是核心语言功能,是由string
标准库中的模块提供。
from string import Template
tp=Template('hello,$name,you are $age') #模板
s4=tp.substitute(name=name,age=age) #替换变量
print(s4)
5.Python字符串格式化的经验法则
如果格式字符串是用户提供的,请使用Template strings以避免安全问题。否则,如果您使用的是Python 3.6+ ,请使用f-strings,否则请使用str.format()。