Python168的学习笔记3
list.extend(),可以拓展list,a=(0,1),b=(2,3) a.extend(b),a就变成(0,1,2,3)
分割字符串(除去字符串中的,\/;之类的),如果用str.split(),默认是除去空格,然后返回处理过后的list,可以输入特定值如split(';'),但缺点是一次只能处理一个特定的。
1 #coding:utf8 2 def mySplit(s,ds): 3 res = [s] 4 5 for d in ds: 6 t = [] 7 map(lambda x : t.extend(x.split(d)),res) 8 #实际上就是res.split(d),然后将处理后的list全部加到t中 9 res = t 10 11 return [x for x in res if x]#除去空的 12 13 s = 'ab;cd|efg;hi..jk\\mn\top' 14 print mySplit(s,',;|.\\\t')
通过循环使用可以达到最终效果。
在处理复杂情况时使用正则表达式会更简单。
1 import re 2 s = 'ab;cd|efg;hi..jk\\mn\top' 3 print re.split(r'[,;.\t\\|]+',s)
在判断字符串的开头或结尾,可以直接使用s.startwith()或s.endwith(),这两个函数可以接受tuple。
用re.sub可以做到字符串调换,先利用正则表达式来做到捕获各个组,然后在替换字符串中调整各个捕获组的位置。如将2016-11-06变成11/06/2016这样。
1 import re 2 3 datas = ('2015-06-19','2015-06-20','2015-06-30') 4 5 for data in datas: 6 # print re.sub(r'(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1',data) 7 print re.sub(r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',r'\g<month>/\g<day>/\g<year>',data)
拼接字符串用str.join()方法,'[]'.join(iter)(就是指每个元素中间可以选择加关键字)但是注意方法接收的对象,如果有数字需要转换为字符,而在这里,我们最好用()来传入迭代器而不是只用一次的list。
1 data = ['a','b','c','d',234] 2 3 print ''.join((str(x) for x in data))#用圆括号就是迭代器,用方括号就是列表
关于对字符串的对齐操作,可以用str.ljust(),str.rjust(),str.center()之类的,如a = kkk, a.ljust(20,[=])就是会输出20个字符kkk在最左边,然后填充17个=进去。
用format()然后传入'<20'(左对齐,20个字符),'>20','^20'这些参数也跟上面那种方法一样。
关于删除某些字符串的方法
1 #coding:utf8 2 s = '-------abc+++++++++' 3 print s.strip('+-')#还有lstrip,rstrip,缺点在于只能去掉左右两端的 4 s = 'abc:123' 5 print s[:3] + s[4:]#切片用处很大局限 6 s = 'abc\tdef\tghc123\t' 7 print s.replace('\t', '')#只能替换单个 8 import re 9 s = 'abc\td\ref\tghc\n123\t' 10 print re.sub('[\t\r\n]','',s)#用正则应该是最好的 11 #s.translate(table[,deletechars])table可以是一个字典,里面对应着映射关系表;或者传入None,然后再传入要删除的关键字。 12 import string 13 s = 'abc123xyz' 14 print s.translate(string.maketrans('abcxyz', 'xyzabc'))#用maketrans()可以直接建立映射表 15 print s.translate(None,'123')