字符串拆分

  在python中有切片(Slice)操作符,可以对字符串进行截取,还提供了split()函数可以将一个

字符串分裂成多个字符串组成的列表。在使用split()函数来拆分字符串之前,我们先来看看它的底

层构造。

    def split(self, *args, **kwargs): # real signature unknown
        """
        Return a list of the words in the string, using sep as the delimiter string.
        
          sep
            The delimiter according which to split the string.
            None (the default value) means split according to any whitespace,
            and discard empty strings from the result.
          maxsplit
            Maximum number of splits to do.
            -1 (the default value) means no limit.
        """

  其语法为 string = str.split(sep,maxsplit)[n] ,该函数使用字符串中的字符作为分隔

符(sep),返回字符串分词后的列表(不含有作为分隔符的字符);同时还可以传入一个int参数

(n)作为分隔的次数,(默认值为 -1,不限制次数),maxsplit是分割次数。

  需要注意的是,当不写分割符(sep)时表示所有的空字符,包括空格、换行(\n)、制表符(\t)等,

有分隔符时,以该分隔符进行分割。

实例演示

无分隔符的情况

str1 = "Process finished with exit code 0"
str2 = "Process\nfinished\nwith\nexit\ncode\n0"
str3 = "Process\tfinished\twith\texit\tcode\t0"

str1 = str1.split()
str2 = str2.split()
str3 = str3.split()

print(str1)
print(str2)
print(str3)

   从运行结果可以看到,在没有参数的情况下,函数默认以空格,回车符,空格符等作为分割条件。

有分隔符的情况

str1 = "Process+finished+with+exit+code+0"
str2 = "Process,finished,with,exit,code,0"
str3 = "Process finished with exit code 0"

str1 = str1.split('+')
str2 = str2.split(',')
str3 = str3.split('e')

print(str1)
print(str2)
print(str3)

   从运行结果可以看出,函数会以分隔符为分割条件,对字符串进行分割,再将得到的每个分割段

存储为列表进行返回。

有分割次数的情况

str2 = "Process,finished,with,exit,code,0"

sp1 = str2.split(',',1)
sp3 = str2.split(',',3)
sp5 = str2.split(',',5)
sp7 = str2.split(',',7)

print(sp1)
print(sp3)
print(sp5)
print(sp7)

   该函数的第二个参数是分割次数,有同学可能发现了,sp7已经超出最大分割次数了啊。没错,

最后一个分割段是"0",以分隔符","对其无法再继续分割,所以保持不变。

简单应用

  题目:在一行输入 3 个整数,用空格隔开,要求输出第二个整数的值。虽然是入门级的题,但很

好的运用了split()函数,大家可以自己先思考下再展开下面代码。

num = input().split(' ',2)[1]
print(num)

View Code

字符串合并

  字符串合并在日常开发工作中比较常用,同样先看下其底层构造:

    def join(self, ab=None, pq=None, rs=None): # real signature unknown; restored from __doc__
        """
        Concatenate any number of strings.
        
        The string whose method is called is inserted in between each given string.
        The result is returned as a new string.
        
        Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
        """
        pass

  该函数可以连接任意数量的字符串,将字符串插入到被调用的两两字符串间,返回一个新的字符串。

其语法为 string_name.join(iterable) 。

参数说明:

  string_name:分隔符,可以为空

  iterable:要连接的元素序列、字符串、元组、字典

  返回值:返回一个以分隔符string_name连接各个元素后生成的字符串

应用演示

操作字符串

str1 = 'python'
print('-'.join(str1))

操作序列

web = '.'
str2 = ["www","baidu","com"]
print("https://" + web.join(str2))

操作字典

str3 = {"name": "liulei","age": 19,"sex": 1}
print('-'.join(str3)) #操作字典时只对键进行连接

操作元祖

str4 = ("/home","test","scripts")
print("/".join(str4))