日常使用python经常要对文本进行处理,无论是爬虫的数据解析,还是大数据的文本清洗,还是普通文件的处理,都是要用到字符串.。Python对字符串的处理内置了很多高效的函数,非常方便功能很强大。下面是我总结的常用的7招,有了这几招就能轻松应对字符串处理。 整理到头皮发麻~改天做个小测试,看看有没有人在看! 1.字符串的连接和合并 连接和合并 1)相加 >>>两个字符串可以很方便的通过' '连接起来 str1 = 'hello' str2 = 'forchange' new_str = str1 str2 print(new_str) >>>helloforchange 2)合并>>>用join方法 url = ['www','pypypy','cn'] print('.'.join(url)) >>>www.pypypy.cn # 注意:这里的太多'.'一定要加上哈,你不加就是语法错误,固定格式。有能力的同学可以看一下python的官方文档~没有也没事,毕竟我也没看完。 2.字符串的切片和相乘 1)相乘>>>比如写代码的时候要分隔符,用python很容易实现 line='#'*30 print(line) >>############################## 2)切片 str = 'fengbian is very good' print(str[0:10]) #表示取第一个到第10个的字符串 >>>fengbian i #注意:空格在字符串也算一个字符 # 上面肯定又有同学混乱了,不是左取右不取嘛,怎么第10位也取了。大哥,人家偏移量(下标)是从0开始的嘛,那我们习惯数数的时候是从1开始嘛,好不好?头给你锤歪~ 
3.字符串的分割 1)普通的分割,用split,分割和切片不同哈。 split只能做非常简单的分割,而且不支持多个分隔 print(phone.split('-')) >>['400', '800', '800', '1234'] 2)复杂的分割 r表示不转义,分隔符可以是;或者, 空格后面跟0个多个额外的空格,然后按照这个模式去分割 line = 'learn programme; I ,like, fengbian' import re print(re.split(r'[;,s]\s*',line)) >>>['learn programme', 'I ', 'like', 'fengbian'] 好了,肯定又有同学要问我这是啥啊,我看不懂~~~我也没看懂,哈哈哈哈哈哈哈哈,开个玩笑 注意看,line一开始是字符串,里面的;,两个符号都要用英文,在写代码的时候,一般遇到符号自动切成英文输入法,不然到后面很多语法你会发现,明明照写了,为嘛还是不能实现出别人的效果,我刚刚就犯了这个错误,在电脑前抓耳饶腮了半个小时,差点儿砸电脑了~ 说道哪了,回正题~re.split(r'[;,s]\s*',line ,这个属于固定格式,line不算哈,那个是变量名。 你也看到了,打印出来的结果是一个列表,里面的每个元素都是字符串,这个没毛病吧。那么这个玩意到底会在哪个场景用到,以后做数据清洗的时候会用到~ 4.字符串的开头和结尾的处理 比方我们要查一个文件的名字是以什么开头或者什么结尾 filename='trace.h' print(filename.endswith('h')) >>True print(filename.startswith('trace')) >>True 5.字符串的查找和匹配 1)一般查找 在长的字符串里面查找子字符串,会返回子字符串所在位置的索引, 若找不到返回-1 title = 'I like you, fengbian,I\'m a better person because of you' print(title.find('you')) >>>8 哥,数的时候从0开始数,下标是从0开始的啊,哦对了,空格也要数~疯狂提醒 2)复杂的匹配 mybirthday = '1996/05/28' import re if re.match(r'\d /\d /\d ',mybithday): print('ok,match') esle: print('ko not match') >>>ok,match 这个我还没想到很好的比喻给你们解释,等想到了,我在提醒你们来看~偷懒! 6.字符串的替换 1)普通的替换 用replace就可以 text ='I like you, fengbian,I\'m a better person because of you' print(text.replace('like','love')) >>>I love you, fengbian,I'm a better person because of you 2)复杂的替换 若要处理复杂的或者多个的替换,需要用到re模块的sub函数 import re myinfo = 'height 173,weight 120' print(re.sub(r'\d ','180',myinfo)) >>>height 180,weight 180 这个也留着,以后一起解释~
7.字符串中去掉一些字符 1)去除空格 对文本处理的时候比如从文件中读取一行,然后需要去除每一行的两侧的空格,table或者是换行符 line=' Congratulations, you guessed it. ' print(line.strip()) >>Congratulations, you guessed it. 注意:字符串内部的空格不能去掉,若要去掉需要用re模块 2)复杂的文本清理可以利用str.translate, 先构建一个转换表,table是一个翻译表,表示把't''o'转成大写的'T' 'O', 然后在old_str里面去掉'12345',然后剩下的字符串再经过table翻译 import string instr = 'to' outstr = 'TO' old_str = 'hello woold,welcome to use python.123456' table = old_str.maketrans(instr,outstr) new_str = old_str.translate(table) print(new_str) >>>hellO wOOld,welcOme TO use pyThOn.123456 注释:这一章节还有些不完整~后续更新我会提醒各位
|