Python 字符串连接的七种方式

Posted 菜鸟教程*…*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 字符串连接的七种方式相关的知识,希望对你有一定的参考价值。

1.’+’ 号连接

用 ‘+’连接字符串应该是最基本的方式了,话不多说,直接上代码。

>>> text1 = "Hello"
>>> text2 = "World"
>>> text1 + text2 
'HelloWorld'

优点:容易记忆。

缺点:性能较差,因为 Python 中的字符串是不可变类型。用 “+” 号连接就相当于生成一个全新的字符串,生成字符串则需要重新申请内存,那么当用 ” + ” 连接非常多个字符串时,将会很耗费内存,可能造成内存溢出。

2.’,’连接成 tuple (元组)类型

Python 中用 ‘,’连接字符串,最终会变成 tuple 类型,代码如下:

>>> text1 = "Hello"
>>> text2 = "World"
>>> text1 , text2 
('Hello','World')
>>> type((text1, text2))
<type 'tuple'>
>>>

3. %s 占位符连接

这种功能比较强大,借鉴了C语言中 printf 函数的功能,如果你有C语言基础,看下文档就知道了。这种方式用符号“%”连接一个字符串和一组变量,字符串中的特殊标记会被自动用右边变量组中的变量替换:

>>> text1 = "Hello"
>>> text2 = "World"
>>> "%s%s"%(text1,text2)
'HelloWorld'

4.空格自动连接

>>> "Hello" "Nasus"
'HelloNasus'

值得注意的是,不能直接用参数代替具体的字符串,否则报错,代码如下:

>>> text1="Hello"
>>> text2="World"
>>> text1 text2
  File "<stdin>", line 1
    text1 text2
            ^
SyntaxError: invalid syntax

5.’*’ 连接

这种连接方式就是相当于 copy 字符串,代码如下:

>>> text1="nasus "
>>> text1*4
'nasus nasus nasus nasus '
>>>

6、join 连接

利用字符串的函数 join。这个函数接受一个列表或元组,然后用字符串依次连接列表中每一个元素:

>>> list1 = ['P', 'y', 't', 'h', 'o', 'n']
>>> "".join(list1)
'Python'
>>>
>>> tuple1 = ('P', 'y', 't', 'h', 'o', 'n')
>>> "".join(tuple1)
'Python'

每个字符之间加 “|”

>>> list1 = ['P', 'y', 't', 'h', 'o', 'n']
>>> "|".join(list1)
'P|y|t|h|o|n'

7、 多行字符串拼接 ()

Python 遇到未闭合的小括号,自动将多行拼接为一行,相比三个引号和换行符,这种方式不会把换行符、前导空格当作字符。

>>> text = ('666'
 '555'
 '444'
 '333')
>>> print(text)
666555444333
>>> print (type(text))
<class 'str'>

python中字符串链接的七种方式

一. str1+str2

string类型 ‘+’号连接

>>> str1="one"
>>> str2="two"
>>> str1+str2
‘onetwo‘
>>>
注意:该方式性能较差,因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了
例如:

技术分享
#!/usr/bin/evn python
# -*- coding: utf-8 -*-
#Author: Johnson Chen

from time import time

def lz():
    t = time()
    for i in range(10000):
        s = s = 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州 + 兰州
    print(time() -t)
def v5():
    t = time()
    for i in range(10000):
        s = ‘‘.join([威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武,威武])
    print(time() -t)
lz() is v5()
View Code

运行结果为:

0.19512629508972168

0.06001925468444824

前后两种方式的性能有3倍的差距。

二. str1,str2

string类型 ‘,’号连接成tuple类型

>>> str1="one"
>>> str2="two"
>>> str1 ,str2
(‘one‘, ‘two‘)
>>> type((str1 ,str2))
<type ‘tuple‘>
>>>

三. “%s%s” %(str1,str2)

string类型占位符连接

>>> str1="one"
>>> str2="two"
>>> "%s%s"%(str1,str2)
‘onetwo‘

四. str1 str2

string类型空格自动连接

>>> "one" "two"
‘onetwo‘

这里需要注意的是,参数不能代替具体的字符串写成 
错误方式:

>>> str1="one"
>>> str2="two"
>>> str1 str2
  File "<stdin>", line 1
    str1 str2
            ^
SyntaxError: invalid syntax

五. M*str1*N

string类型乘法连接

>>> str1="one"
>>> 1*str1*4
‘oneoneoneone‘
>>>

六. join方式连接

string类型join方式连接list/tuple类型

>>> str1="one"
>>> list1=["a","b","c"]
>>> tuple1=("H","I","J")
>>> str1.join(list1)
‘aonebonec‘
>>> str1.join(tuple1)
‘HoneIoneJ‘

这里的join有点像split的反操作,将列表或元组用指定的字符串相连接; 
但是值得注意的是,连接的列表或元组中元素的类型必须全部为string类型,否则就可能报如下的错误:

>>> list2=["a",2,"c",4.3]
>>> str1.join(list2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 1: expected string, int found
>>>

join还有一个妙用,就是将所有list或tuple中的元素连接成string类型并输出;

>>> list1
[‘a‘, ‘b‘, ‘c‘]
>>> "".join(list1)
‘abc‘
>>> type("".join(list1))
<type ‘str‘>
>>>

七.列表推导方式连接

与join方式类似

>>> "".join(["Land" for i in xrange(3)])
‘LandLandLand‘
>>> "0".join(["Land" for i in xrange(2)])
‘Land0Land‘
>>>






以上是关于Python 字符串连接的七种方式的主要内容,如果未能解决你的问题,请参考以下文章

详解Python拼接字符串的七种方式

python 添加字符串的七种方法

214Vue 定义组件模板的七种方式

Linux 中的七种文件类型

Python 炫技操作:合并字典的七种方法

Python 炫技操作:条件语句的七种写法