导语
在之前的分享中提到了关于Python基本的数据类型,并且提到了一个基本数据类型字符串,花费了三篇博客的时间对于字符串的基本操作做了分享。这篇博客主要分享关于字符串格式化的问题,在开发中经常会用到字符串格式化的操作。所以对于字符串的格式化操作无论是对于使用者还是开发人员都是有很多的好处。
字符串格式化
字符串的格式化主要有两种方式,一种是以百分号的形式,一种是使用Format函数,下面就来看看常用的简单字符串拼接。对于字符串的拼接来说它的主要的作用就是定制化的显示数据。
msg = "I am %s my hobby is coding" %"nihui";
print(msg)
常用字符串格式化
百分号方式
%[(name)][flags][width].[precision]typecode
- (name) 可选,用于选择指定的key
- flags 可选,可以提供的值有如下
+
表示右对齐-
表示左对齐空格
表示右对齐0
表示右对齐
- width 可选表示所占宽度
- precision 可选,表示小数点后保留的位数
- typecode 必选
s
获取传入对象的__str__方法返回的值。r
获取传入对象__repr__方法返回值c
将整数转换成字符串o
将整数转换成八进制x
将整数转换成十六进制d
数字处理%
在打印百分号的时候使用e
科学计数法f
浮点数操作
常用字符串的拼接
使用 %s 可以代表任意的的数据。而%d只能表示整数
msg = "I am %s my hobby is coding" %"nihui";
msg1 = "I am %s my hobby is %s" % ("nihui","Python")
msg2 = "I am %s my hobby is %s" % ("nihui",1)
msg3 = "I am %s my hobby is %s" % ("nihui",[1,2])
msg4 = "I am %s my hobby is %d" % ("nihui",12)
print(msg)
print(msg1)
print(msg2)
print(msg3)
print(msg4)
拼接浮点数和百分比
在下面使用的时候需要注意对于浮点书的截取,一个是四舍五入的,一个是直接进行字符截取,但是不推荐使用字符截取。
## 对于浮点数进行操作
tpl = "percent %.2f %%" % 98.314241
print(tpl)
## 只是表示字符串的截取
tpl = "percent %.4s" % 99.76444444444
print(tpl)
键值拼接字符串
在一般的操作中为了方便,还可以进行如下的操作。对于字符串进行键值拼接,后面传入的是一个固定的字典
tpl = "I am %(name)s age %(age)d" % {"name":"nihui","age":18}
tpl1 = "I am %(pp).2f" % {"pp":123.123534}
print(tpl)
print(tpl1)
Format方式
[[fill]align][sign][#][0][width][,][.precision][type]
- fill 可选 空白处填充的字符
- align 可选对其方式需要配合width使用
<
内容左对齐>
内容右对齐,默认=
内容右对齐,将符号放在左侧,只对数字有效^
内容居中显示
- sign 可选参数,有无符号数字
+
正号加正,负号加负-
空格
默认
#
对于进制的表示,
给数字添加分割符- width 格式化所占位数
- precision 小数保留位置
- type 格式化类型 主要有以下一些参数
- 传入字符串
s
空白
- 传入数字参数
b
将十进制转换为二进制表示c
将十进制准换为对应的Unicoded
十进制o
将十进制转换为八进制x
将十进制转换为十六进制f
表示浮点数e
表示科学计数法g
表示自动切换e和f
- 传入字符串
常用格式化
test = "I am {},age {},{}".format("nihui",23,"test")
print(test)
test = "I am {},age {},{}".format(*["nihui",23,"test"])
print(test)
## 按照参数位置进行匹配
test = "I am {0},age {2},{1}".format("nihui",23,"test")
print(test)
test = "I am {0},age {2},{1}".format(*["nihui",23,"test"])
print(test)
#按照制定参数匹配
test = "I am {name},age {age},{test}".format(name="nihui",age=23,test="test")
print(test)
## 按照字典的方式进行传递
test = "I am {name},age {age},{test}".format(**{"name":"nihui","age":23,"test":"test"})
print(test)
## 按照列表,最终会拼接成一个元组
test = "I am {1[0]} ,age {0[1]},i like {0[2]}".format([1,2,3],[11,22,33])
print(test)
## 按照制定参数类型进行传值
test = "I am {:s} age {:d}, I Like {:f}".format("nihui",23,234.234)
print(test)
test = "I am {:s} age {:d}, I Like {:f}".format(*["nihui",23,234.234])
print(test)
## 按照键值对的方式进行传递
test = "I am {name:s} age {age:d}, I Like {like:f}".format(name="nihui",age=23,like=234.234)
print(test)
## 按照字典的方式进行传递
test = "I am {name:s} age {age:d}, I Like {like:f}".format(**{"name":"nihui","age":23,"like":234.234})
print(test)
## 按照制定类型格式化数字
number = "number {:b},{:o},{:d},{:x},{:X},{:%}".format(12,23,41,12,123,123,12312,2)
print(number)
总结
对于字符串的其他操作格式化的操作可以在使用的时候查询API,或者其实在工作中只要掌握上面这些就足够了。除非你想去搞点其他的事情,这样的场景下就需要掌握的更加深入,这样可以自动的实现某些功能。