python cookbook第2版第1章

第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

python cookbook第2版第1章的相关文章

python书籍推荐:Python Cookbook第三版中文

所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/44/ 来源:python黑洞网 内容简介 <Python Cookbook(第3版)中文版>介绍了Python应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字.日期和时间,迭代器和生成器,文件和I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和Web编程,并发,实用脚本和系统管理,测

Python Cookbook(第3版) 中文版 pdf完整版高清下载

Python Cookbook(第3版)中文版介绍了Python应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字.日期和时间,迭代器和生成器,文件和I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和Web编程,并发,实用脚本和系统管理,测试.调试以及异常,C语言扩展等. 本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案.书中包含了大量实用的编程技巧和示例代码,并在Python 3.3环境下进行了测试,可以很方便地应用到实际项目中

python cookbook第三版学习笔记六:迭代器与生成器

假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items:   Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一种存储数据的数据结构,容器将所有数据保存在内存中,典型的容器有列表,集合,字典,字符数组等.如items就是一个列表容器.   可迭代对象:这个对象是否可迭代.如items也是一个可迭代对象.简单来说如果可以用for循环的对象都称为可迭代对象.如果要判断是否是一个可迭代的对象.可以用print isinsta

Python Cookbook(第3版)中文版:15.1 使用ctypes访问C代码

15.1 使用ctypes访问C代码? 问题? 你有一些C函数已经被编译到共享库或DLL中.你希望可以使用纯Python代码调用这些函数,而不用编写额外的C代码或使用第三方扩展工具. 解决方案? 对于需要调用C代码的一些小的问题,通常使用Python标准库中的 ctypes 模块就足够了.要使用 ctypes ,你首先要确保你要访问的C代码已经被编译到和Python解释器兼容(同样的架构.字大小.编译器等)的某个共享库中了.为了进行本节的演示,假设你有一个共享库名字叫 libsample.so 

python cookbook第三版学习笔记十三:类和对象(三)描述器

__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法比较绕,我们来看一个实例: class Descriptor(object):     def __get__(self, instance, owner):         return 'get',self,instance,owner class T(object):     d=Descri

python cookbook第三版学习笔记五:datetime

Python中表示时间的模块是datetime,引入下面的模块 from datetime import datetime,timedelta print datetime.today()  #打印出当前的时间 E:\python2.7.11\python.exe E:/py_prj/python_cookbook.py 2017-04-26 21:58:05.663000 我们还可以对时间进行加减操作.这里要用到timedelta模块 这个模块有5个重要参数分别是days,minutes,se

python cookbook第三版学习笔记三:列表以及字符串

过滤序列元素: 有一个序列,想从其中过滤出想要的元素.最常用的办法就是列表过滤:比如下面的形式:这个表达式的意义是从1000个随机数中选出大于400的数据 test=[] for i in range(1000):     test.append(random.randint(1,1000)) ret=[n for n in test if n >400] 根据cookbook书上的描述,这个方法适用于小数据的方式.如果数据集非常的大,而且要考虑内存的话建议使用生成器的方式ret=(n for

python cookbook第三版学习笔记二:字典

一般来说字典中是一个键对应一个单值的映射,如果想一个键值映射多个值,那么就需要将这些值放到另外的容器中,比如列表或者集合. 比如d={'a':[1,2]} Collections中的defaultdict模块会自动创建这样的字典.如下 d=defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(3) defaultdict(<type 'list'>, {'a': [1, 2], 'b': [3]}) 下面再来看下字典

python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性

先介绍几个类中的应用__getattr__,__setattr__,__get__,__set__,__getattribute__,. __getattr__:当在类中找不到attribute的时候,会调用__getattr__,并执行其中的自定义代码.所有在类中定义的属性都包含在__dict__中,也就是说如果在__dict__中找不到对应的属性名,则__getattr__被触发. class get_try(object):     def __init__(self,value):