Python学习第二十六天—字符串6

[复制链接]
15271953841 发表于 2024-2-19 07:10:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 15271953841 于 2024-2-21 06:34 编辑

Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
格式化字符串
从符号选项来讲解,仅对数字类型有效,可用的值有“+”,“-”,“ ”
"{:+}{:-}".format(520,-250)
'+520-250'
还可以设置千位的分隔符,有两个值可选,一个是“,”,一个是“_”
"{:,}".format(1234)
'1,234'
"{:_}".format(1234)
'1_234'
"{:,}".format(123)            (如果位数不足,千位分隔符是不显示的)
'123'
"{:,}".format(123456789)
'123,456,789'
接下来是精度选项,只需填入一个十进制的整数,对于不同类型的参数它的效果是不一样 。
如:对于[type]设置为“f”或”F”的浮点数来说,是限定小数点后显示多少数位。
对于[type]设置为“g”或”G”的浮点数来说,是限定小数点前后一共显示多少数位。
对于非数字类型来说,限定的是最大字段的大小。
对于整数来说,则不允许使用[.precision]选项。

"{:.2f}".format(3.1415)
'3.14'
"{:.2g}".format(3.1415)
'3.1'
"{:.6}".format(3.1415)
'3.1415'
"{:.6f}".format(3.1415)
'3.141500'
"{:.6}".format("I love FishC")       (前6位被截取)
'I love'
"{:.2}".format(520)            (报错原因是:因为精度选项不允许用在整数上)
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    "{:.2}".format(520)
ValueError: Precision not allowed in integer format specifier
"{:b}".format(80)                (“b‘,将参数以二进制的形式输出)
'1010000'
"{:c}".format(80)               (“c”,将参数以unicode字符的形式输出)
'P'
"{:d}".format(80)               (“d‘,将参数以十进制的形式输出)
'80'
"{: o}".format(80)               (“o‘,将参数以八进制的形式输出,:与o中间的空格不要)
'120'
"{:x}".format(80)                (“x“或“X”,将参数以十六进制的形式输出)
'50'
"{:#b}".format(80)
'0b1010000'
"{:#d}".format(80)
'80'
"{:#c}".format(80)
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    "{:#c}".format(80)
ValueError: Alternate form (#) not allowed with integer format specifier 'c'
"{:#o}".format(80)
'0o120'
"{:#x}".format(80)
'0x50'

"{:e}".format(3,1415)       (”e”将参数以科学计数法的形式输出,精度为6)
'3.000000e+00'
"{:E}".format(3,1415)        (”E”将参数以科学计数法的形式输出,精度为6)
'3.000000E+00'
"{:f}".format(3,1415)        (“f”或”F“将参数以定点表示法的形式输出,默认精度为6)
'3.000000'
"{:e}".format(3.1415)
'3.141500e+00'
"{:E}".format(3.1415)
'3.141500E+00'
"{:f}".format(3.1415)
'3.141500'
"{:g}".format(3.1415)
'3.1415'
"{:g}".format(123456789)      (“g“,通用格式,小数以”f”形式输出,大数以”e”的形式输出)
'1.23457e+08'
"{:g}".format(123456)
'123456'
"{:g}".format(12345.6)
'12345.6'
"{:g}".format(1234.56789)             (整数6位时得6位整数,小于6位时的小数,大于6位时得e)
'1234.57'
"{:%}".format(0.98)  (“%“,以百分数的形式输出(将数字乘以100并显示为定点表示法”f”的形式,后面附带一个百分号)
'98.000000%'
"{:.2%}".format(0.98)     (.2表示精确到小数点后两位,使用精度选项“.2”)
'98.00%'
更灵活的玩法
"{:.{prec}f}".format(3.1415,prec=2)      ({prec}通过关键字参数来设置选项的值,同时可以设置多个选项,参数名字是随便取的)
'3.14'
"{:{fill}{align}{width}.{prec}{ty}}".format(3.1415,fill="+",align="^",width=10,prec=3,ty="g")
'+++3.14+++'
最大的主角要出场了——f-字符串(f-string)
f-string可以理解成format的语法糖(syntactic sugar)
语法糖是计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用,语法糖让程序更加简洁,有更高的可读性。

year=2023
"中小学创客网络社区的建设与应用研究课题立项于{}年".format(year)
'中小学创客网络社区的建设与应用研究课题立项于2023年'
对比
F"中小学创客网络社区的建设与应用研究课题立项于{year}年"
'中小学创客网络社区的建设与应用研究课题立项于2023年'

"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'
对比
F"{-520:010}"
'-000000520'

"{:,}".format(123456789)
'123,456,789'
对比
f"{123456789:,}"
'123,456,789'

"{:.2f}".format(3.1415)
'3.14'
对比
f"{3.1415:.2f}"
'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+++'
总结:f-字符串,在3.6以下版本不使用。

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鄂ICP备13007585号-4

在本发帖
关注公众号
QQ客服返回顶部