一、字符串总结五
1.格式化字符串
“字符串”.format()
字符串的 format() 方法上使用 字符串格式化语法
>>> year=2010
>>> "鱼c工作室成立于year年" #引号中的内容被当做字符串来处理了
'鱼c工作室成立于year年'
#花括号{}用来占位,中英文{}都可以
#在字符串中,格式化字符串的套路就是使用一对花括号({})来表示替换字段,就在原字符串中先占一个坑的意思,然后真正的内容被放在了 format() 方法的参数中。
>>> "鱼c工作室成立于{}年".format(year)
'鱼c工作室成立于2010年'
>>> "1+2={},2的平方时{},3的立方是{}".format(1+2,2*2,3*3*3)
'1+2=3,2的平方时4,3的立方是27'
>>> "{}看到{}就很激动".format("小甲鱼","漂亮的小姐姐")
'小甲鱼看到漂亮的小姐姐就很激动'
#通过下标索引找到对应元素
>>> "{1}看到{0}就很激动".format("小甲鱼","漂亮的小姐姐")
'漂亮的小姐姐看到小甲鱼就很激动'
>>> "{0}{0}{1}{1}".format("是","非")
'是是非非'
#选用关键字参数,不用管顺序
>>> "我叫{name},我爱{fav}".format(name="小甲鱼",fav="python")
'我叫小甲鱼,我爱python'
>>> "我叫{name},我爱{0},喜爱{0}的人,运气都不会太差".format("python",name="小甲鱼")
'我叫小甲鱼,我爱python,喜爱python的人,运气都不会太差'
2.format单纯输出花括号
“字符串”.format()
>>> "{},{},{}".format(1,"{}",2) #参数里面直接写上花括号
'1,{},2'
>>> "{},{{}},{}".format(1,2) #花括号注释花括号
'1,{},2'
3.align指定字符串对齐的方式
3.1 ‘^’强制字符串在可用空间中居中
“{:^}”.format()
冒号":"是必须的,它的左边是位置或者关键字索引,右边是格式化选项。
‘^’强制字符串在可用空间中居中
>>> "{:^}".format(250)
'250'
>>> "{:^10}".format(250) #宽度为10,字符250长度为3
' 250 '
3.2align中’<‘和’>’
'<'强制字符串在可用空间内左对齐(默认)
'>'强制字符串在可用空间内右对齐
'<'强制字符串在可用空间内左对齐
'>'强制字符串在可用空间内右对齐
#位置索引1对应的数250在空间中向右
>>> "{1:>10}{0:<10}".format(520,250)
' 250520 '
>>> "{left:>10}{right:<10}".format(right=520,left=250) #关键字参数
' 250520 '
3.3宽度前面加0进行0填充(0可以对正负进行感知)
“{:010}”.format()
填充0只对数字有效,字符串会报错
>>> "{:010}".format(520)
'0000000520'
>>> "{:010}".format(-520) # 0填充到负号的右边
'-000000520'
>>> "{:010}".format("fishc") #字符串会报错
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
"{:010}".format("fishc")
ValueError: '=' alignment not allowed in string format specifier
3.4用%进行填充
“{1:%>10}{0:%<10}”.format(520,250)
#宽度为10,位置索引1对应的数250在空间中向右,,,,
>>> "{1:%>10}{0:%<10}".format(520,250)
'%%%%%%%250520%%%%%%%'
3.5 align中的‘=’
‘=’ 强制将填充放在符号(如果有)之后但在数字之前的位置(这适用于以"+000000120"的形式打印字符串)
前面填充0的例子也可以这样写
>>> "{:0=10}".format(520)
'0000000520'
>>> "{:0=10}".format(-520)
'-000000520'
>>>
课后题:
1.请问下面代码会打印什么内容?
>>> "我叫{name},我爱{0}。喜爱{0}的人,运气都不会太差^o^".format(name="小甲鱼", "python")
SyntaxError: positional argument follows keyword argument
改:“字符串”.format(“python”,name=“小甲鱼”)
答:报错
解析:这里有个小细节需要大家注意一下,就是使用关键字进行索引的话,它必须放在位置索引的后面,否则就会报错(其实在后面我们讲解到自定义函数的时候,也会提到这个规则)。
2. 请问下面代码会打印什么内容?
>>> "{{0}}".format(1)
'{0}'
解析:在花括号外边套一层花括号,外层是对内层起到“注释“的作用。
所谓”注释“,就是剥夺了花括号的特殊功能,使它变会一个正经的字符串。
3.请问下面代码会打印什么内容?
>>> "{{{0}}}".format(1)
'{1}'
解析:
这里稍微有一丢丢小复杂了,由于存在 3 层花括号包裹,我们必须逐层给它剥开。
首先最外层注释了倒数第二层,那么最终结果将保留一个花括号。
接着,内部剩下的 {0},则正常解析,获取 format() 的第一个参数。
4.请问下面代码会打印什么内容?
>>> "{{{{{{0}}}}}}".format(1)
'{{{0}}}'
解析:数一下,这里存在 6 层花括号包裹,所以不难想象,每 2 层进行一次注释,得到的就是 3 对失去了特殊功能的花括号,所以剩下一个 0 也自然是正经的字符串。
课后题来自链接: 小甲鱼python