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')

 

posted @ 2016-11-05 22:29  Nanrou  阅读(234)  评论(0编辑  收藏  举报