一、字符串总结六
1.格式化字符串(“+”、“-”)
>>> "{:+}{:-}".format(520,-250)
'+520 -250'
2.千分位分隔符(整数类型)
用逗号分割
>>> "{:,}".format(123) #如果位数不足,千分位是不显示的
'123'
>>> "{:,}".format(123456789)
'123,456,789'
3.千分位分隔符(g、f、非整数类型)
对于[type]设置为’f’或’F’的浮点数来说,是限定小数点后显示多少个数位
对于[type]设置为’g’或’G’的浮点数来说,是限定小数点前后一共显示多少个数位
对于非数字类型来说,限定的是最大字段的大小
对于整数类型来说,则不允许使用[.precision]选项
f、g、非整数应用
>>> "{:.2f}".format(3.1415) #小数点后显示2位
'3.14'
>>> "{:.2g}".format(3.1415) #小数点前后2位
'3.1'
>>> "{:.6}".format("I love Fishc") #最大字段前六位
'I love'
>>> "{:.2}".format(520) #精度选项不允许应用在整数上
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
"{:.2}".format(520)
ValueError: Precision not allowed in integer format specifier
>>>
4.整数类型选项进行分类(b、o、d、x)
>>> "{:b}".format(80) #二进制
'1010000'
>>> "{:c}".format(80) #80对应的unicode字符
'P'
>>> "{:d}".format(80) #十进制
'80'
>>> "{:o}".format(80) #八进制
'120'
>>> "{:x}".format(80) #十六进制
'50'
字符以八进制、二进制、十进制输出时都会追加一个#号
>>> "{:#b}".format(80) #二进制
'0b1010000'
>>> "{:#o}".format(80) #八进制
'0o120'
>>> "{:#x}".format(80) #十六进制
'0x50'
>>>
5.浮点数、复数类型选项进行分类(b、o、d、x)
>>> "{:e}"
'{:e}'
>>> "{:e}".format(3.1415) # e默认精度为6
'3.141500e+00'
>>> "{:E}".format(3.1415)
'3.141500E+00'
>>> "{:f}".format(3.1415) # f默认精度为6
'3.141500'
>>> "{:g}".format(123456789) # g用发,大数用e输出
'1.23457e+08'
>>> "{:g}".format(1234.56789) #g用发,大数用E(定点表示法)输出
'1234.57'
%号的用法
>>> "{:%}".format(0.98) # %默认有6个小数位
'98.000000%'
>>> "{:.2%}".format(0.98) # 精确到小数点后2位
'98.00%'
>>>
>>> "{:.{prec}f}".format(3.1415,prec=2) #通过关键字参数来设置选项的值
'3.14'
>>> "{:{fill}{align}{width}.{prec}{ty}}".format(3.1415,fill='+',align='^',width=10,prec=3,ty='g')
'+++3.14+++'
6.F、f字符串的用法
>>> year=2010
>>> "鱼C工作室成立于{}年".format(year)
'鱼C工作室成立于2010年'
>>> F"鱼C工作室成立于{year}年"
'鱼C工作室成立于2010年'
>>> "1+2={},2的平方是{},3的立方是{}".format(1+2,2*2,3*3*3)
'1+2=3,2的平方是4,3的立方是27'
>>> F"1+2={1+2},2的平方是{2*2},3的立方是{3*3*3}"
'1+2=3,2的平方是4,3的立方是27'
格式化字符串的语法也适用
>>> "{:010}".format(-520)
'-000000520'
>>> "{-520:010}" #纯字符串
'{-520:010}'
>>> f"{-520:010}" # f字符串,内容放到冒号前面
'-000000520'
>>> "{:,}".format(123456789)
'123,456,789'
>>> f"{123456789:,}"
'123,456,789'
>>> "{:.2f}".format(3.1415)
'3.14'
>>> f"{3.1415:.2f}".format()
'3.14'
>>> "{:{fill}{align}{width}.{prec}{ty}}".format(3.1415,fill='+',align='^',width=10,prec=3,ty='g')
'+++3.14+++'
>>> fill='+'
>>> align='^'
>>> width=10
>>> prec=3
>>> ty='g'
>>> f"3.1415:{fill}{align}{width}.{prec}{ty}"
'3.1415:+^10.3g'
>>> f"{3.1415:{fill}{align}{width}.{prec}{ty}}"
'+++3.14+++'
>>>
课后题:
1.用 f-string,最需要注意的是什么?
答:兼容性。
解析:如果是在正式开发,请务必先了解你的代码将在什么版本的 Python 上运行!这很重要,在 Python3.6 之前,f-string 是不被支持的。
2.请问下面代码会打印什么内容?
>>> f"{{1 + 2}}"
'{1 + 2}'
解析:在花括号外边套一层花括号,外层是对内层起到“注释“的作用。
所谓”注释“,就是剥夺了花括号的特殊功能,使它变会一个正经的字符串。
3. 请问下面代码会打印什么内容?
>>> f"{{{1 + 2}}}"
'{3}'
解析:这里外面的两层大括号由于“注释”的作用,失去了特殊功能
不过此时还剩下 {1+2},这个可就要正常解析了。
4.请问下面代码会打印什么内容?
>>> f"{520:.2}"
答:会报错。
解析:因为整数不允许被设置“精度”选项,如果非要这么做,可以加一个 ‘f’(即 f"{520:.2f}"),表示将参数以小数的形式输出。
5. 请将下面 format() 格式化字符串修改为 f-string 的格式
>>> "{:{fill}{align}{width}.{prec}{ty}}".format(3.1415, fill='$', align='^', width=10, prec=2, ty='f')
答:
>>> f"{3.1415:$^10.2f}"
第5题补充:
>>> "{:{fill}{align}{width}.{prec}{ty}}".format(3.1415,fill='$',align='^',width=10,prec=2,ty='f')
'$$$3.14$$$'
>>> fill='$'
>>> align='^'
>>> width=10
>>> prec=2
>>> ty='f'
>>> f"{3.1415:{fill}{align}{width}.{prec}{ty}}"
'$$$3.14$$$'
>>>
题目来自于: 小甲鱼字符串VI