描述

输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入

第一行输入一个英文句子‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
第二行输入一个符号 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出

用符号连接起来的单词

字符串的切分可以用str.split(s)方法实现,字符串的连接可以用str.join(s)方法实现,下面先了解一下这两方法的用法。

  1. str.split(sep=None, maxsplit=-1)

返回一个由字符串内单词组成的列表,使用 sep 指定的值作为分隔符。 如果给出了 maxsplit值,则最多进行 maxsplit 次拆分,列表最多会有 maxsplit+1 个元素。 如果 maxsplit 未指定或为 -1,则不限制拆分次数,进行所有可能的拆分。

  1. line = 'my name is python!'
  2. print(line.split(sep = ' ',maxsplit = 1)) # 只切分1次['my', 'name is python!']
  3. print(line.split(' ',2)) # 关键字可省略,只传值。切分2次['my', 'name', 'is python!']

当其只有一个参数值时,该值为sep指定的分隔符,不限制拆分次数。

  1. line = 'my name is python!'
  2. print(line.split(' ')) # ['my', 'name', 'is', 'python!']

无sep参数时,默认分隔符为空格,多个空格会被视为一个分格符:

  1. line = input()
  2. print(line.split()) # 根据字符串line中的空格,将其切分为一个列表
  3. # my name is python!
  4. # my name is python!
  5. # ['my', 'name', 'is', 'python!']

如果给出了 sep,则连续的分隔符不会被组合在一起而是被视为分隔空字符串

  1. line = input()
  2. print(line.split(' ')) # 以一个空格为分隔符,将字符串切分为一个列表
  3. # my name is python!
  4. # ['my', '', '', '', '', 'name', 'is', '', '', '', '', '', '', '', '', '', 'python!']

sep 参数可能由多个字符组成。

  1. line = input()
  2. print(line.split('<()>')) # 以'<()>'为分隔符,将字符串切分为一个列表
  3. # my<()>name<()>is<()>python!
  4. # ['my', 'name', 'is', 'python!']

使用指定的分隔符拆分空字符串将返回空列表 []。

  1. line = ''
  2. print(line.split()) # 输出 []

字符串的连接可以用str.join()方法

  1. str.join(iterable) # iterable是可迭代对象,字符串、列表、元组、集合、字典等类型数据

str.join(iterable)
返回一个由 可迭代对象 中的字符串元素拼接而成的字符串。 调用该方法的字符串 str 将作为字符串元素之间的分隔。

  1. ls = ['my', 'name', 'is', 'python!']
  2. print(':'.join(ls)) # my:name:is:python!
  3. print('->'.join(ls)) # my->name->is->python!
  4. s = 'python' # 参数可为字符串等可迭代类型数据
  5. print('->'.join(s)) # p->y->t->h->o->n

如果可迭代对象中存在任何非字符串值包括字节(bytes) 对象则会引发 TypeError。

  1. l = [1,2,3,4] # 列表元素为整数,不可用join()连接
  2. # print('->'.join(l)) # TypeError: sequence item 0: expected str instance, int found
  3. print('->'.join(map(str,l))) # 1->2->3->4,可用map将非字符串序列元素映射为字符串类型

这样,我们这可以使用这两个方法完成字符串的切分和拼接了。

  1. line = input() # 输入一个等切分的字符串
  2. sign = input() # 输入一个用于分隔的字符串
  3. ls = line.split() # 根据字符串 line 中的空格,将其切分为一个列表
  4. print(sign.join(ls)) # 用变量 sign 中的字符串连接列表 ls 中的字符串元素

输入

  1. my name is python!
  2. -

输出

  1. my-name-is-python!

可以将其定义为一个函数

  1. def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
  2. return sign.join(line.split()) # 返回切分并用sign连接起来的字符串

完整参考程序:

  1. def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
  2. return sign.join(line.split()) # 返回切分并用sign连接起来的字符串
  3. line = input() # 输入一个待切分的字符串
  4. sign = input() # 输入一个分隔符号
  5. result = split_and_join(line,sign) # 调用函数进行切分和连接
  6. print(result) # 输出处理结果
  1. def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
  2. return sign.join(line.split()) # 返回切分并用sign连接起来的字符串
  3. if __name__ == '__main__': # 以下语句在以模块形式导入时不执行
  4. line = input() # 输入一个待切分的字符串
  5. sign = input() # 输入一个分隔符号
  6. result = split_and_join(line,sign) # 调用函数进行切分和连接
  7. print(result) # 输出处理结果

当确认题目的输入都是用单个空格分隔时,也可以用replace()函数把空格替换为输入的分隔符:

  1. def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
  2. return line.replace(' ',sign) # 用sign替换原字符串中的空格
  3. if __name__ == '__main__': # 以下语句在以模块形式导入时不执行
  4. line = input() # 输入一个待切分的字符串
  5. sign = input() # 输入一个分隔符号
  6. result = split_and_join(line,sign) # 调用函数进行切分和连接
  7. print(result) # 输出处理结果

此方法仅限于原字符串中的分隔符都是单个空格,多个空格分隔时,结果与要求不符,不推荐用这个方法。