字符串格式

python提供%对各类型的数据进行格式化输出。

>>> price = 108
>>> print("the book's price is %s" % price)
the book's price is 108

print函数包含三部分,第一部分格式化字符串(它相当于字符串模板),该格式化字符串中包含一个%s占位符,它会被第三部分的变量或表达式的值代替,第二部分固定使用%作为分隔符。

格式化字符串中的%s被称为转换说明符(conversion specifier),其作用相当于一个占们符,它会被后面的变量或表达式的值代替。%s指定将变量或值使用str()函数转换为字符串。

如果格式化中包含多个%s占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来,

>>> user = 'charli'
>>> age = 8
>>> print("%s is a %s year old boy" % (user , age))
charli is a 8 year old boy

复制代码
>>> num = 28
>>> print("num is: %6i" % num)
num is:     28
>>> print("num is: %6d" % num)
num is:     28
>>> print("num is: %6x" % num)
num is:     1c
>>> print("num is: %6o" % num)
num is:     34
>>> print("num is: %6X" % num)
num is:     1C
>>> print("num is: %6s" % num)
num is:     28
复制代码

从输出结果可以看出,此时指定了字符串最小宽度为6,因此程序转换数值时总宽度为6,程序自动在数值前面补充了三个空格。默认情况下不够宽度时左边用空格补充。python也允许在最小宽度前添加一个标志来改变这种行为,支持的标志如下。

  1. -:指定左对齐
  2. +:表示数值总要带着符号(正数带+,负数带-)
  3. 0:表示不补充空格,而是补充0
>>> num2 = 30
>>> print("num2 is: %06d" % num2)     #最小宽度为0,左边补0
num2 is: 000030
>>> print("num2 is: %+06d" % num2)   #最小宽度为6,左边补0,总是带上符号
num2 is: +00030
>>> print("num2 is: %-06d" % num2)    #最小宽度为6,左边对齐。
num2 is: 30

对于转换浮点数python还允许指定小数点后的数字位数,如果转换的是字符串,python允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用(.)隔开,

>>> my_value = 3.001415926535
>>> print("my_value is: %8.3f" % my_value)    #最小宽度为8小数点后面保留3位。
my_value is:    3.001
>>> print("my_value is: %08.3f" % my_value)   #最小宽度为8小数点后面保留3位,左边补0
my_value is: 0003.001
>>> print("my_value is: %+08.3f" % my_value)  #最小宽度为8小数点后面保留3位,左边补0,始终带符号
my_value is: +003.001
>>> the_name = 'charlie'
>>> print("the_name is: %.3s" % the_name)   #只保留3个字符。
the_name is: cha
>>> print("the_name is: %10.2s" % the_name)   #只保留2个字符,最小宽度为10
the_name is:         ch

 

posted @   星火撩原  阅读(702)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-03-26 http概述
2020-03-26 服务的路由和负载均衡
2020-03-26 Linux系统调优相关工具
2020-03-26 Linux-yum只下载不安装
点击右上角即可分享
微信分享提示