![c0d43d4c9005c445b04956699664b853.png](https://i-blog.csdnimg.cn/blog_migrate/f8596e27bd70dffbc1a496e68c017612.jpeg)
不管是爬虫,还是数据分析,还是Web开发,字符串是最基础的基础结构。
本篇文章重点讲解对象,字符串——使用频率最高的数据结构之一【或许没有之一也说不定】
首先来讲一下字符串的格式化方式。
方法1. 使用 + 号
这种是最简单的字符串拼接方式了,如下:
str_a = 'hello'+ 'world'
最简单的加法,就是将两个字符串,通过一个加号 + ,将他们组合起来,然后赋值给另一个参数。
如果是多个字符串需要拼接,直接使用 字符串+字符串+字符串+...
,就不多说了
方法2. %s 替换
这个也是非常常见的,使用%s进行替换,如下
str_b = "Nice to %s"
names = ['elisha','wendy','davis','gloria']
for name in names:
print(str_b%name)
#结果输出
#Nice to elisha
#Nice to wendy
#Nice to davis
#Nice to gloria
这是单个的%s替换字符,如果是多个呢?
str_b = "Hi, %s. I'm %s"
names = [['elisha','wendy'],['davis','gloria']]
for name in names:
print(str_b%(name[0],name[1]))
#结果输出
#Hi, elisha. I'm wendy
#Hi, davis. I'm gloria
效果图:
![25b814eba4543e4cc3810e4ce5b4720a.png](https://i-blog.csdnimg.cn/blog_migrate/6b6a0b44a8e77aa75de5f9cf4b6bfeac.jpeg)
这里的%s替换方式,不仅仅只有%s,还有其他的一些特定格式,如下表格:
转换说明符,都以%开始输出格式d,i十进制u无符号数o八进制x十六进制或长整数X十六进制f,e,E浮点数g,G指数小于-4时使用s字符串或者任意对象,同str生成的字符串r同repr生成的字符串
在%符号和转换说明符中间,还可以加如下的修饰符:
-
左对齐标志【默认是右对齐】+
号表示显示数字的正负号0
表示用0来填充空位- 如果是将字典的值格式化成字符串,则%符号和转换说明符中间可以写
(键)
- 一个小数点,用于按精度来分割内容的显示宽度
- 一个数字,指定要打印字符串中最大字符个数,小数点之后的位数;或者整数的最小位数
代码示意:
# 对应第4条内容
dict_a = {'name':'小布','age':18}
print("我的名字是%(name)s,我今年%(age)d岁,且永远%(age)d岁"%dict_a)
# 对应第1 2 3 5 6条内容
float_a = 12.58734
print("%f"%float_a) #12.587340;正常打印
print("%3f"%float_a) #12.587340;最小宽度为3,但是长度已经超过了3,所以正常打印
print("%10f"%float_a) # 12.587340;最小宽度为10,宽度不足10,默认为右对齐,向左补充空格直至宽度为10
print("%.3f"%float_a) #12.587;小数点后的数字为精度,小数点后保留3位
print("%.10f"%float_a) #12.5873400000;小数点后位数不足10,补0至位数为10
方法3. format替换
format函数也非常的强大,简单分类就是字符串格式化和数字格式化
1. 字符串格式化
print("{} {}".format("spbeen", "xiaobu")) # 按顺序
# 结果:'spbeen xiaobu'
print("{0} {1}".format("spbeen", "xiaobu")) # 按位置
# 结果:'spbeen xiaobu'
print("{1} {0} {1}".format("spbeen", "xiaobu")) # 按位置
# 结果:'xiaobu spbeen xiaobu'
上面就是非常简单的字符串格式化的方式,可以选择默认顺序,或者是指定format函数括号内的第几个参数
2. 数字的格式化
数字的格式化,因为考虑到排版、对其、缩进等问题,所以这个知识点,比较的多,下面依旧使用表格展示:
数字格式输出描述3.1415926{:.2f}3.14保留小数点后两位3.1415926{:+.2f}+3.14带符号保留小数点后两位-1{:+.2f}-1.00带符号保留小数点后两位2.71828{:.0f}3不带小数5{:0>2d}05数字补零 (填充左边, 宽度为2)5{:x<4d}5xxx数字补x (填充右边, 宽度为4)10{:x<4d}10xx数字补x (填充右边, 宽度为4)1000000{:,}1,000,000以逗号分隔的数字格式0.25{:.2%}25.00%百分比格式1000000000{:.2e}1.00e+09指数记法13{:>10d} 13右对齐 (默认, 宽度为10)13{:<10d}13左对齐 (宽度为10)13{:^10d} 13中间对齐 (宽度为10)
表格的补充说明:
- ^, <, > 分别是居中、左对齐、右对齐,后面带宽度
- : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
- + 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
- b、d、o、x 分别是二进制、十进制、八进制、十六进制。
方法4. f-string 语法
这个知识点,是Python3.6的新特性,所以要注意,3.6之前的版本,请勿测试,因为不支持
链接:Python3.6官方文档
先上一个截图:
![eca85f910c0a491f05e715e7b95b38d8.png](https://i-blog.csdnimg.cn/blog_migrate/a3cd7f1b75a6cbe163ddff12d9b8691d.jpeg)
相对于%s和format来讲,这是一个更简单、更方便的写法。
因为即使是%s和format,如果拼接的内容很多,则他们两个在括号内,都要写比较长的一串内容。
但是在这里呢,就非常方便了,只要是在字符串声明时,在引号前写一个字母f
,则字符串内的{}
就可以直接写该行代码前,出现过的变量名,非常的方便。甚至是函数名,都可以直接使用
上两个脚本代码段:
int_a = 98
int_b = 776
print(f"a+b的结果是{int_a+int_b}")
# 结果是 874
def accum_to(num1, num2):
total = 0
for i in range(num1, num2+1):
total += i
return total
num1 = 34
num2 = 867
print(f"从{num1}开始,一直累加到{num2},总和是{accum_to(num1,num2)}")
# 输出:从34开始,一直累加到867,总和是375717
效果图:
![4c56f67cd970252f9ebedcdcd451bda2.png](https://i-blog.csdnimg.cn/blog_migrate/ae65aa9dafe0672fdd2a4016f073dc23.jpeg)
以上就是本篇文章的全部介绍内容了
!放在最后
如果文章中有什么错误或者建议修改的地方,欢迎留言纠正和回复
如果你喜欢本篇文章,不妨关注一下我们的公众号,每周更新两篇原创技术文档,都是干货
![4da12c21f681ca17c5dd03ed18111002.png](https://i-blog.csdnimg.cn/blog_migrate/ce42db52692eb7b9ee4b0981ce753bd1.jpeg)