新客立减

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

、⾯向对象模板拼接