Python中拼接字符串的7种方式

在Python中,处理字符串的方式有很多种,它们各有各的特点,常用的有7种。

1. 使用 % 占位拼接

print('%s %s' % ('Hello','World'))

以上代码会输出Hello World

这种方式第一次出现是在C语言中,%s是一个占位,意味着这里可以被放置一个字符串,实际的字符串的值通过后面的元组传递。占位符不仅仅有%s,如%d代表一个整数、%f代表浮点数等等。

这种方式最大的缺点就是每个不同类型的数据需要使用不同的占位符,略嫌麻烦。

2. 使用 format() 方法

format()方法使用{}来做占位,使用方式有3种。

  • 第一种:
# format函数的参数按照{}从前往后的顺序一一对应值
s = 'Hello {},Hello {}'.format('World','Python')
  • 第二种:
# {}中填入索引值,{0}代表值 'World',以此类推,这样就可以在任意位置传入任意值
s = 'Hello {0},Hello {1}'.format('World','Python')
  • 第三种:
# {}填入属性名,参数通过key-value形式传入值
s = 'Hello {name1},Hello {name2}'.format(name1='World',name2='Python')

以上三种方式可以根据习惯来选择,一般使用第三种。指向明确、次序不混乱。

3. 使用 ()的方式

这种方式咋一看起来很像元组的形式,但实际并不是。

s = ('Hello' ',' 'World')
print(s)

输出结果是Hello,World,这种方式每一对引号为一部分,相邻引号对之间可以使用任意空格分开。并且,这种方式得到的字符串的数据类型就是str。

这种方式的缺点是,()内不能使用变量,如果有变量,就不能有其他字符串常量,并且,变量最多也只能有一个。即s = (str1)str1是变量,这样是合理的。s = (str1 str2)s = (str1 'Hello')都是不行的,会报错。

4. 使用模板Template

模板拼接字符串是一种完全的面向对象的方式,贯彻落实了Python一切皆对象的思想。

from string import Template	# 导入string模板

s = Template('${s1} ${s2}!!')	# ${}是占位符,取对应名字的变量的值,而后与其他字符串拼接
print(s.safe_substitute(s1='Hello',s2='World'))

5. +方式

这在任何语言中,都是最常用的方式。不多说,先上代码。

str1 = 'Hello' + ','
str2 = 'World'
print(str1 + str2)

输出Hello,World

普遍认为,这种方式的性能较好。的确,这种方式,在大部分情况下,性能都是挺好的。但是如果遇到长字符串的拼接,这种方式的性能就会有明显下降。至于原因,可以去了解一下CPython的常数折叠优化和字符串的特权种族。

6. join()方法拼接

str_list = ['Hello','World']
str_join1 = ' '.join(str_list)
str_join2 = '-'.join(str_list)
print(str_join1)	# 输出 Hello World
print(str_join2)	# 输出 Hello-World

str对象自带的join()方法接收一个序列参数。而后设置统一的间隔符。普遍来说,拼接长度不超过20时,这种方式效率是最高的。

7. f-string方式

name = 'World'
myname = 'Python_Cat'
words = f'Hello {name},My Name is {myname}.'
print(words)	# 输出 Hello World,My Name is Python_Cat.

这种方式在Python3.6版本引入的,{}包裹变量名。这种方式比起format()的可读性要好很多,处理长字符串时,速度与join()相当。

总结

以上7种字符串拼接方式从原理上可以划分为3中类型:

格式化类:%format()template
拼接类:+()join()
插值类:f-string

选择原则:对列表结构的拼接,自然是使用join()、对于较短字符串(一般指20以下)使用+的性能最好,超过20的最好使用f-string,如果版本比较低不支持,那就使用format()或者join()

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值