比如:num = input("请输入一个整数:")如果要输入两个整数呢?我们当时是通过两个input语句,分别放到两个变量中的。这样输入很麻烦,而且用户输入数据的个数可能是未知的,也就是说,你不知道用户输入的是两个,三个甚至五个。比如需要用户输入喜欢的水果,可能有的用户会输入两种,有的用户会输入三种那怎么一次读取多个数据?用 split()
运行后,输入数据:苹果 香蕉 橘子
结果如下图所示:
可以看到,第一行(原始的)fruit是一个字符串,而第四行(处理后的)fruit是一个列表。
split() 可以按指定字符把字符串切开,返回一个列表。
所以,处理用户多个输入的通常做法是:
用 input() 一次性接收用户输入的多个数据(得到一个字符串),再用 split() 拆成列表。
拆分成列表后,就可以使用列表的各种函数和方法了。
比如用 len() 统计数量、用 for 循环遍历、用 in 判断是否存在……
split() 能把字符串拆开,那拆开之后怎么拼回去?
用 join()。语法是:指定字符.join(列表)
和split()的用法一样,用指定的分隔符将列表中的每一项连接起来。
运行结果如下:
可以看到,第一行(原始)fruit是列表,通过join()方法,将列表中的哥哥元素连接后得到的fruit是字符串。
split()和join()互为“逆操作”。
split()是把一串糖葫芦拆成一个个山楂
join()是把一个个山楂串成糖葫芦
join() 可以按指定字符把列表中的每个元素连接起来,返回一个字符串。
网络评论区经常需要过滤不文明用语。下面这个程序会把用户留言中的敏感词替换成 ***。
程序代码如下:
运行结果如下:
该案例中综合用到了字符串的lower()方法、split()方法、join()方法,以及列表的遍历和append()方法。如果想加更多屏蔽词,还可以在blocked列表中继续添加。可能有的小伙伴要问,那中文呢?也可以屏蔽敏感词吗?可以,但需要先分词。
中文和英文不一样。
中文句子里的词是连在一起的,不像英文那样用空格分隔。比如英文的"You are a bad boy",默认就用空格隔开了,可以很方便的用split()分隔成列表,列表中有五个元素。但中文的"你这个笨蛋",中间没有空格,程序会把这五个字当成一个词。想要处理中文,需要用到中文分词技术(比如 jieba 库)。把句子切分成有意义的词语后,再判断哪些词是敏感词。比如,要先把"你这个笨蛋"分成'你', '这个', '笨蛋',这样 "笨蛋" 就能被识别出来了。还有个问题,如果英文比较长,出现了不同的标点符号,仅仅用空格来分隔是不够的。比如 You are a bad boy, stupid boy. I hate you.