【Python学习】3.Python字符串拼接的八种方式
Python字符串拼接的八种方式
在很多情况下,都需要合并字符串。python有种拼接字符的方法,细分为三种类型:
格式化类:%、format()、template
拼接类:+、*、()、join()
插值类:f-string
(1)格式化类
- 使用占位符%
# 将字符串s1和s2使用占位符%拼接起来 s1 = 'hello' s2 = 'world' print('%s %s '%(s1, s2)) #%s是一个占位符,它仅仅只代表一段字符串,并不是实际的拼接内容,需要拼接的内容s1和s2放在在一个单独的%号后面,放在一个元组里 >>>hello world
%s是一个占位符,它仅仅只代表一段字符串,并不是实际的拼接内容,需要拼接的内容s1和s2放在在一个单独的%号后面,放在一个元组里,类似的占位符还有:%d(代表一个整数)、%f(代表一个浮点数)、%x(代表一个16进制数),等等。
占位符%s既可以表示字符串str,还可以表示整数int,浮点数float;
占位符%d既可以表示整数int,还可以表示浮点数float(去除整数部分);
占位符%f既可以表示浮点数float,还可以表示整数int(默认保留6位小数);
- format()方法
# 普通版 s1 = '一二{}四{}六!'.format('三', '五') print(s1) >>>一二三四五六!
# 编号清晰版 s2 = '一二{name1}四{name2}六'.format(name1='三', name2='五') print(s2) >>>一二三四五六
format方式使用花括号{}做占位符,在format方法中再转入实际的拼接值。它实际上是对%号拼接方式的改进。无需考虑拼接内容的类型。上例中,简洁版的花括号中无内容,缺点是容易弄错次序。编号版是在{}为凭借内容进行编号,更加清晰可读。
format()方法详细用例
- 面向对象模板拼接template
Python中Template是string中的一个类,可以将字符串的格式固定下来,重复利用。可以用于自动生成测试用例。要使用的话要在头部引入。
# 导入Template模块 from string import Template
用法很简单,先生成一个模板实例s,然后调用替换函数substitute()将模板中的两个地方替换掉。替换的内容是通过字典对调用的。
# 直接使用$ from string import Template s = Template('$a,$b!') print(s.substitute(a='Hello',b='world')) >>> Hello,world!
# 使用${},使用这种方法时候,括号里的内容要和括号紧贴,不能有空格,否则会报错 from string import Template s = Template('${a},${b}!') print(s.substitute(a='Hello',b='world')) >>> Hello,world!
当然在使用substitute()的时候,对应的关键字和值都要给出,不然会报错,使用safe_substitute()可以避免报错
# 使用safe_substitute()可以避免报错 from string import Template s = Template('${a},${b}!') print(s.safe_substitute(a='Hello')) # 没有给出b的值,但不会报错,而是吧${b}当作字符串打印出来 >>> Hello,${b}!
(2)拼接类
- 使用 + 号拼接
使用加号直接连接字符串,代码如下:
s1 = 'hello,' s2 = 'world!' print(s1 + s2) #直接将两个字符连接打印 >>>hello,world!
当拼接的最终字符串长度不超过20时,+号操作符的方式,会比后面提到的join()等方式快得多,这与+号的使用次数无关。
注意:加号两边必须是相同类型,例如若出现字符串+整形,系统就会报错。另外,字符串是不可变类型,新的字符串会独占一块新的内存,而原来的字符串保持不变。上例中,拼接前有两段字符串,拼接后实际有三段字符串。
- 使用 * 号拼接
这种连接方式就是相当于 copy 字符串,可以重复拼接自身代码如下:
print('ab'*2) #将字符串复制两次 >>>abab
- join()方法
join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
#str.join(sequence),sequence -- 要连接的元素序列。 str = '-' # 设置连接符 seq1 =('a', 'b', 'c') #定义一个序列,这个序列是一个元组 print(str.join(seq1)) >>>a-b-c seq2 ='abc' #也可直接对字符串进行操作,字符串也是一个序列 print('-'.join(seq2)) >>>a-b-c
str对象自带的join()方法,接受一个序列参数(列表或元组),可以实现拼接。拼接时,元素若不是字符串,需要先转换一下。可以看出,这种方法比较适用于连接序列对象中(例如列表)的元素,并设置统一的间隔符。
当拼接长度超过20时,这种方式基本上是首选。不过,它的缺点就是,不适合进行零散片段的、不处于序列集合的元素拼接。
(3)插值类
- f-string方法
f-string是字符串前加“f”或者“F”,然后字符串内“{}”就有特殊意义了,里面填写变量名,运行时自动计算这个变量的值,代入字符串内输出。该方法不涉及格式化问题,就是在f-string中的大括号填写一句可执行的Python语句,运行时把它执行得到的值,替换这一个“{}”块。
# 简单使用 name = 'lilly' print(f'Hello,my name is {name}') >>>hello,my name is lilly
#表达式求值和函数调用 # 表达式求值 print(F'Hello,my age is {11+9}') >>>Hello,my age is 20
# 函数调用 import math print(f'The answer is {math.log(math.pi)}') >>>'The answer is 1.1447298858494002'
f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。
当要处理字符串列表等序列结构时,采用join()方式;拼接长度不超过20时,选用+号操作符方式;长度超过20的情况,高版本选用f-string,低版本时看情况使用format()或join()方式。
关于字符串拼接,还得补充一个建议,即在复杂场景下,尽量避免使用以上几类原生方法,而应该使用外置的强大的处理库。比如在拼接 SQL 语句的时候,经常要根据不同的条件分支,来组装不同的查询语句,而且还得插入不同的变量值,所以当面临这种复杂的场景时,传统拼接方式只会加剧代码的复杂度、降低可读性和维护性。使用SQLAlchemy模块,将有效解决这个问题。
本文主要参考《python学习手册》Mark Lutz,Python猫公众号,作者豌豆花下猫。
- 点赞 1
- 收藏
- 分享
- 文章举报
- Matlab学习笔记(2)——拼接字符串的三种方式
- python学习(9)—— python字符串的分割,拼接,换行,去除多余空格
- Python字符串的常见拼接方式
- Python拼接字符串的七种方式
- Python——拼接字符串的几种方式
- python学习基础篇--DAY4--%、format字符串拼接
- python字符串与非字符串拼接三种方式
- 学习笔记(09):Python 面试100讲(基于Python3.x)-使用fstring方式格式化字符串
- 学习笔记(11):Python 面试100讲(基于Python3.x)-请详细描述向字符串的format方法传递参数有几种方式...
- Python字符串拼接的五种方式
- Python学习-用户输入和字符串拼接
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- 详解Python拼接字符串的七种方式
- 使用python做一个简单的名片管理系统-------字符串拼接方式实现
- Python学习(三):拼接字符串、序列
- Python拼接字符串的7种方式详解
- 1.Python学习笔记:[Print()格式;缩进;变量命名;注释;字符串拼接;表达式和运算符;变量赋值;输入;强制类型转换;IF语句]...
- Python小白学习之路(九)—【字符串格式化】【百分号方式】【format方式】
- Python学习笔记:字符串格式化方式
- python 学习 字符串拼接、整数序列求和、九九乘法表输出、计算1+2!+3!...+10!、猴子吃桃问题 、健康食谱输出的结果 红五角星DAY11