描述
输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。
输入
第一行输入一个英文句子
第二行输入一个符号
输出
用符号连接起来的单词
字符串的切分可以用str.split(s)方法实现,字符串的连接可以用str.join(s)方法实现,下面先了解一下这两方法的用法。
str.split(sep=None, maxsplit=-1)
返回一个由字符串内单词组成的列表,使用 sep 指定的值作为分隔符。 如果给出了 maxsplit值,则最多进行 maxsplit 次拆分,列表最多会有 maxsplit+1 个元素。 如果 maxsplit 未指定或为 -1,则不限制拆分次数,进行所有可能的拆分。
line = 'my name is python!'
print(line.split(sep = ' ',maxsplit = 1)) # 只切分1次['my', 'name is python!']
print(line.split(' ',2)) # 关键字可省略,只传值。切分2次['my', 'name', 'is python!']
当其只有一个参数值时,该值为sep指定的分隔符,不限制拆分次数。
line = 'my name is python!'
print(line.split(' ')) # ['my', 'name', 'is', 'python!']
无sep参数时,默认分隔符为空格,多个空格会被视为一个分格符:
line = input()
print(line.split()) # 根据字符串line中的空格,将其切分为一个列表
# my name is python!
# my name is python!
# ['my', 'name', 'is', 'python!']
如果给出了 sep,则连续的分隔符不会被组合在一起而是被视为分隔空字符串
line = input()
print(line.split(' ')) # 以一个空格为分隔符,将字符串切分为一个列表
# my name is python!
# ['my', '', '', '', '', 'name', 'is', '', '', '', '', '', '', '', '', '', 'python!']
sep 参数可能由多个字符组成。
line = input()
print(line.split('<()>')) # 以'<()>'为分隔符,将字符串切分为一个列表
# my<()>name<()>is<()>python!
# ['my', 'name', 'is', 'python!']
使用指定的分隔符拆分空字符串将返回空列表 []。
line = ''
print(line.split()) # 输出 []
字符串的连接可以用str.join()方法
str.join(iterable) # iterable是可迭代对象,字符串、列表、元组、集合、字典等类型数据
str.join(iterable)
返回一个由 可迭代对象 中的字符串元素拼接而成的字符串。 调用该方法的字符串 str 将作为字符串元素之间的分隔。
ls = ['my', 'name', 'is', 'python!']
print(':'.join(ls)) # my:name:is:python!
print('->'.join(ls)) # my->name->is->python!
s = 'python' # 参数可为字符串等可迭代类型数据
print('->'.join(s)) # p->y->t->h->o->n
如果可迭代对象中存在任何非字符串值包括字节(bytes) 对象则会引发 TypeError。
l = [1,2,3,4] # 列表元素为整数,不可用join()连接
# print('->'.join(l)) # TypeError: sequence item 0: expected str instance, int found
print('->'.join(map(str,l))) # 1->2->3->4,可用map将非字符串序列元素映射为字符串类型
这样,我们这可以使用这两个方法完成字符串的切分和拼接了。
line = input() # 输入一个等切分的字符串
sign = input() # 输入一个用于分隔的字符串
ls = line.split() # 根据字符串 line 中的空格,将其切分为一个列表
print(sign.join(ls)) # 用变量 sign 中的字符串连接列表 ls 中的字符串元素
输入
my name is python!
-
输出
my-name-is-python!
可以将其定义为一个函数
def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
return sign.join(line.split()) # 返回切分并用sign连接起来的字符串
完整参考程序:
def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
return sign.join(line.split()) # 返回切分并用sign连接起来的字符串
line = input() # 输入一个待切分的字符串
sign = input() # 输入一个分隔符号
result = split_and_join(line,sign) # 调用函数进行切分和连接
print(result) # 输出处理结果
def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
return sign.join(line.split()) # 返回切分并用sign连接起来的字符串
if __name__ == '__main__': # 以下语句在以模块形式导入时不执行
line = input() # 输入一个待切分的字符串
sign = input() # 输入一个分隔符号
result = split_and_join(line,sign) # 调用函数进行切分和连接
print(result) # 输出处理结果
当确认题目的输入都是用单个空格分隔时,也可以用replace()函数把空格替换为输入的分隔符:
def split_and_join(line,sign): # 输入参数分别为待切分的字符串和用于分隔的符号
return line.replace(' ',sign) # 用sign替换原字符串中的空格
if __name__ == '__main__': # 以下语句在以模块形式导入时不执行
line = input() # 输入一个待切分的字符串
sign = input() # 输入一个分隔符号
result = split_and_join(line,sign) # 调用函数进行切分和连接
print(result) # 输出处理结果
此方法仅限于原字符串中的分隔符都是单个空格,多个空格分隔时,结果与要求不符,不推荐用这个方法。