str.join会去除空格吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了str.join会去除空格吗相关的知识,希望对你有一定的参考价值。
在处理Python代码字符串的时候,我们常会遇到要去除空格的情况,所以就总结了多种方法供大家参考。1、strip()方法
去除字符串开头或者结尾的空格
str = " Hello world " str.strip()
输出:
"Hello world"
2、lstrip()方法
去除字符串开头的空格
str = " Hello world " str.lstrip()
输出:
'Hello world '
3、rstrip()方法
去除字符串结尾的空格
str = " Hello world " str.lstrip()
输出:
' Hello world'
4、replace()方法
可以去除全部空格
# replace主要用于字符串的替换replace(old, new, count) str = " Hello world " str.replace(" ","")
输出:
"Helloworld"
5: join()方法+split()方法
可以去除全部空格
# join为字符字符串合成传入一个字符串列表,split用于字符串分割可以按规则进行分割 >>> a = " a b c " >>> b = a.split() # 字符串按空格分割成列表 >>> b ['a', 'b', 'c'] >>> c = "".join(b) # 使用一个空字符串合成列表内容生成新的字符串 >>> c 'abc' # 快捷用法 >>> "".join(a.split()) 'abc 参考技术A 会的。
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
num – 分割次数,默认为-1,即分隔所有
返回值是 分割后的字符串列表。
join和+的区别
连接字符串的时候可以用join也可以用+,但这两者有没有区别呢?
我们先来看一下用join和+连接字符串的例子
str1 = " ".join(["hello", "world"]) str2 = "hello " + "world" print(str1) # 输出 “hello world" print(str2) # 输出 “hello world"
两者的结果是一样,那么考虑这样一个问题,这两者在性能上有区别吗?
我们来做个实验,比较下join和+的性能
import timeit,time def test1(strlist): return "".join(strlist) def test2(strlist): result = "" for v in strlist: result = result+v return result if __name__ == "__main__": strlist = ["a very very very very very very very long string" for n in range(1000)] timer1 = timeit.Timer("test1(strlist)", "from __main__ import strlist, test1") timer2 = timeit.Timer("test2(strlist)", "from __main__ import strlist, test2") time1 = timer1.timeit(number=100) time2 = timer2.timeit(number=100) print("join: %f, plus: %f" % (time1, time2)) strlist1 = ["very very very long long" ,"very long long long","very long long long","very long long long","very long long long"] time1 = time.time() for i in range(100000): test1(strlist1) time2 = time.time() time3 = time.time() for i in range(100000): test2(strlist1) time4 = time.time() print ("join:%s" %(time2-time1)) print("+ :%s" % (time4-time3))
输出:
join: 0.003507, plus: 0.083788 join:0.18189620971679688 + :0.3727850914001465
可以看到,join的性能明显好于+。这是为什么呢?
原因是这样的,字符串是不可变对象,当用操作符+连接字符串的时候,每执行一次+都会申请一块新的内存,因此用+连接字符串的时候会涉及好几次内存申请和复制。而join在连接字符串的时候,会先计算需要多大的内存存放结果,然后一次性申请所需内存并将字符串复制过去,这是为什么join的性能优于+的原因。所以在连接字符串数组的时候,我们应考虑优先使用join
以上是关于str.join会去除空格吗的主要内容,如果未能解决你的问题,请参考以下文章