第1章:文本
1:每次处理一个字符
1:内建函数list
thelist=list(string)
2:for遍历
for i in string:pass
3:列表解析
[i for i in string]
4:通过sets模块来解决这个问题
import setschar=sets.Set(‘abcdeabcd‘)char1=sets.Set(‘subprocessabcdexyzabcdxyz‘)print ‘‘.join(char&char1)
#将字符串逐行或逐词反转s=‘abcde‘print s[::-1]s=s.split()s.reverse()print ‘‘.join(s)#或者s=‘abcde‘print ‘‘.join(s.split()[::-1])#也可以通过正则import reprint u‘正则‘s=re.split(r‘(\s+)‘,s)s.reverse()print ‘‘.join(s)s=‘abcde‘#更高级print ‘ ‘.join(re.split(r"(\s+)",s)[::-1])#更简洁print ‘‘.join(reversed(s))
字符和字符值之间ord(‘a‘)==97chr(97)==‘a‘ 通过map()方式可以编写26个字母map(ord,‘abcd‘)反之print ‘‘.join(chr,range(97,102)) 测试一个对象是否是类对象
def isString(obj): return isinstance(obj,basestring) 字符串对齐
print ‘|‘,‘hej‘.ljust(20),‘|‘,‘hej‘.rjust(20),‘|‘,‘hej‘.center(20),‘|‘最方便的方式如下
print ‘hej‘.center(20,‘+‘)去掉字符串两端的空格x=‘ hej ‘
print ‘|‘,x.lstrip( ),‘|‘,x.rstrip( ),‘|‘,x.strip( ),‘|‘
x=‘xyxxyy hejyx yyx‘print ‘|‘+x.strip(‘xy‘)+‘|‘#固定宽度 合并字符串string=‘‘.join(string)string=‘%s %s year %s‘%(a,b,c)string=s+s+s+‘string‘
string=‘‘for s in l: string+=s或者通过模块import operatorstring=reduce(operator.add,l,‘‘)
#将字符串逐行或逐词反转s=‘abcde‘print s[::-1]s=s.split()s.reverse()print ‘‘.join(s)#或者s=‘abcde‘print ‘‘.join(s.split()[::-1])#也可以通过正则import reprint u‘正则‘s=re.split(r‘(\s+)‘,s)s.reverse()print ‘‘.join(s)s=‘abcde‘#更高级print ‘ ‘.join(re.split(r"(\s+)",s)[::-1])#更简洁print ‘‘.join(reversed(s))
#检查字符串中是否包含某字符集合中的字符def string1(aseq,aset): for c in aseq: if c in aset: return True return False #更高级的方式import itertoolsdef string1(aseq,aset): for c in itertools.ifilter(aset.__contains__,aseq) return True return False #如果是集合def string1(aseq,aset): return bool(set(aset).intersection(aseq)) #
itertools.ifilter()要求传入一个断定(断言,谓词)和一个可迭代对象,然后进行筛选ifilter()如果找到比如列表的子项,同时也是anyset成员,就会返回True
在2.4中或者2.3中通过setSet方法,如下
def string1(aseq,aset): return not set(aset).difference(aseq)#如果不习惯set.difference()语义时,通过下面的例子来解释:a=[1,2,3,4]b=[1,2,3,4]print set(a).difference(b)print set(b).difference(a)print string1(a,b)print string1(b,a)
时间: 2024-10-23 12:37:58