Python
拼接字符串的
7
种⽅式详解
忘了在哪看到⼀位编程⼤⽜调侃,他说程序员每天就做两件事,其中之⼀就是处理字符串。相信不少同学会有同感。
⼏乎任何⼀种编程语⾔,都把字符串列为最基础和不可或缺的数据类型。⽽拼接字符串是必备的⼀种技能。今天,我跟⼤家⼀
起来学习
Python
拼接字符串的七种⽅式。
1
、来⾃
C
语⾔的
%
⽅式
print('%s %s' % ('Hello', 'world'))
>>> Hello world
%
号格式化字符串的⽅式继承⾃古⽼的
C
语⾔,这在很多编程语⾔都有类似的实现。上例的
%s
是⼀个占位符,它仅代表⼀段字
符串,并不是拼接的实际内容。实际的拼接内容在⼀个单独的
%
号后⾯,放在⼀个元组⾥。
类似的占位符还有:
%d
(代表⼀个整数)、
%f
(代表⼀个浮点数)、
%x
(代表⼀个
16
进制数),等等。
%
占位符既是这种拼
接⽅式的特点,同时也是其限制,因为每种占位符都有特定意义,实际使⽤起来太⿇烦了。
2
、
format()
拼接⽅式
#
简洁版
s1 = 'Hello {}! My name is {}.'.format('World', 'Python
猫
')
print(s1)
>>>Hello World! My name is Python
猫
.
#
对号⼊座版
s2 = 'Hello {0}! My name is {1}.'.format('World', 'Python
猫
')
s3 = 'Hello {name1}! My name is {name2}.'.format(name1='World', name2='Python
猫
')
print(s2)
>>>Hello World! My name is Python
猫
.
print(s3)
>>>Hello World! My name is Python
猫
.
这种⽅式使⽤花括号
{}
做占位符,在
format
⽅法中再转⼊实际的拼接值。容易看出,它实际上是对
%
号拼接⽅式的改进。这种
⽅式在
Python2.6
中开始引⼊。
上例中,简洁版的花括号中⽆内容,缺点是容易弄错次序。对号⼊座版主要有两种,⼀种传⼊序列号,⼀种则使⽤
key-value
的⽅式。实战中,我们更推荐后⼀种,既不会数错次序,⼜更直观可读。
3
、
()
类似元组⽅式
s_tuple = ('Hello', ' ', 'world')
s_like_tuple = ('Hello' ' ' 'world')
print(s_tuple)
>>>('Hello', ' ', 'world')
print(s_like_tuple)
>>>Hello world
type(s_like_tuple) >>>str
注意,上例中
s_like_tuple
并不是⼀个元组,因为元素间没有逗号分隔符,这些元素间可以⽤空格间隔,也可以不要空格。使
⽤
type()
查看,发现它就是⼀个
str
类型。我没查到这是啥原因,猜测或许
()
括号中的内容是被
Python
优化处理了。
这种⽅式看起来很快捷,但是,括号
()
内要求元素是真实字符串,不能混⽤变量,所以不够灵活。
#
多元素时,不⽀持有变量
str_1 = 'Hello'
str_2 = (str_1 'world')
>>> SyntaxError: invalid syntax
str_3 = (str_1 str_1)
>>> SyntaxError: invalid syntax
#
但是下⾯写法不会报错
str_4 = (str_1)
4
、⾯向对象模板拼接