您的位置:首页 > 编程语言 > Python开发

python编程快速上手--重点整理(上)

2017-07-07 12:25 323 查看
第一章--python基础★整数型可以和浮点型值相等★py3的input不需要输入双引号,py2的input需要输入双引号第二章--控制流★3种布尔操作符:and or not★按下Ctrl-C可以终止程序★用sys.exit()可以提前终止程序第三章--函数★对于所有没有return语句的函数定义,python都会在末尾加上return None.★print函数的一些参数,end 结束符,sep 分隔符第四章--列表★作为快捷方法,你可以省略切片中冒号两边的一个下标或两个下标。省略第一个下标相当于使用0,或列表的开始。省略第二个下标相当于使用列表的长度。★用+号可以连接两个列表,*号实现列表的复制★用del语句从列表中删除值,例如del spam[1]★多重赋值是一种快捷方式,让你在一行代码中,用列表的值为多个变量赋值,注意变量的数目和列表的长度必须严格相等,否则出现ValueError错误。★用index()方法在列表中查找值,如果值存在则返回他的下标,如果存在重复的值,九分返回它第一次出现的下标。★用append()和insert()方法在列表中添加值。例如spam.append('d');spam.insert(1,'d')★用remove()方法从列表中删除值,spam.remove('d'),或者del spam[1]。如果删除的值出现多次,则只是删除第一次出现的值★用sort()可以对列表排序,默认为升序,指定reverse关键字参数为True可以按逆序排序。sort会改变原来的值。sort中需要注意的事项:1.不能既有数字又有字符串的值的列表排序  2.sort()对字符串排序时使用“ASCII字符排序”而不是实际的字典排序,这意味着大写字母排在小写字母前。  3.如果需要按照普通的字典排序来排序,就在sort()方法调用时,将关键字参数key设置为str.lower★续行字符\,可以将一条信息写成多行★在变量必须保存为可变数据类型的值时,例如列表或字典,python就使用引用。对于不可变的数据类型值,例如字符串,整型或元组,python变量就保存值本身。★使用copy.copy()或者copy.deepcopy()可以复制列表或字典这样的可变值,而不是复制引用。如果复制的列表中包含了列表,那就使用copy.deepcopy()第五章--字典和结构化数据★keys(),values(),items()分别返回字典的键,值,键值对(元组)。这些方法返回的值不是真正的列表,他们不能被修改,没有append()方法,但可用于for循环。例如'a' in spam.keys()相当于'a' in spam.★get()当键不存在时返回默认的值,他有两个参数,要取得的键,如果不存在返回的值。例如spam.get('a',0)★setdefault()为字典中的某个键设置一个默认值,当该键没有任何值时。有两个参数,第一个参数时检查的键,第二个参数时如果该键不存在时要设置的值。★使用pprint模块的pprint()和pformat()可以使得输出更干净。如果字典本身包含嵌套的列表和字典,使用pprint()特别有用;如果希望得到的漂亮文本作为字符串而不是显示在屏幕上,那就调用pformat()。下面两句代码是等价的。
pprint.pprint(spam)print(pprint.pformat(spam))
第六章--字符串操作★upper()和lower()没有改变字符串本身,而是返回一个新的字符串。★如果字符串至少有一个字母,并且所有的字母都是大写或小写,isupper()和islower()方法就会返回布尔值True,否则返回False.★isalpha() 只包含字母,并且非空     isalnum()  只包含数字和字母,并且非空   isdecimal()  isspace() istitle()★startswith()和endswith()。例如‘hello world’.startswith('hell')★join()和split()。join()连接一个字符串列表,例如','.join(['a','b'])★用rjust(),ljust()和center()方法对齐文本。这些方法有个可选参数将指定一个填充字符,取代空格字符。★用strip(),rstrip(),lstrip()删除空白字符。有一个可选字符串参数,指定两边的那些字符应该删除。★用pyperclip模块拷贝粘贴字符串。利用copy()和paste()函数可以向计算机的剪贴板发送文本,或者接受文本。例如pyperclip.copy('hello'),pyperclip.paste()第七章--模式匹配与正则表达式★在python中使用正则表达式:(1)导入re模块(2)用re.compile()函数创建一个regex对象(记得使用原始字符串)(3)向regex对象的search()方法传入想查找的字符串。它返回一个match对象。(4)调用match对象的group()方法,它返回实际匹配文本的字符串。★利用括号分组:添加括号将在正则表达式中创建“分组”,例如‘(\d\d)--(\d\d\d)’,然后使用group()从分组中获取匹配的文本。向group()传入整数1或2就可以获取匹配文本的不同部分,传入0或者为空将返回整个匹配的文本。如果想要一次获取所有的分组,使用groups()。★利用管道“|”可以匹配多个模式。利用括号可以指定前缀。下面的例子匹配batax和batbv。★用?实现可选匹配。就是说,匹配这个问号之前的分组零次或者一次。★用*匹配零次或者多次。就是说,星号前的分组可以在文本中出现任意次,也可以不出现。★用+匹配一次或者多次。★用花括号匹配特定次数。例如(ha){3},还可以指定一个范围,(ha){3,6},匹配3~6次。也可以不写花括号的第一个或第二个数字,不限定最小值或最大值。(ha){3,}匹配3次或者更多。(ha){,3}匹配0~3次。★Python的正则表达式默认是“贪心”的,即它会尽可能的匹配最长的字符串。花括号的“非贪心”版本尽可能匹配最短的字符串,即在结束的花括号后跟一个问号。★findall()方法可以返回一组字符串,包含被查找字符串中的所有匹配。而search()方法返回一个第一个匹配的字符串,而且返回的是一个match对象,而findall()返回字符串列表。有两点注意:(1)如果调用一个没有分组的正则表达式,findall()返回一个字符串列表。(2)如果调用一个有分组的正则表达式,findall()返回一个字符串的元组的列表(每个分组对应一个字符串)。★使用方括号可以建立自己的字符分类。例如[dfs324DSFF]将匹配括号里面的所有字符。也可以使用短横表示字母或数字的范围。例如[a-z0-9]。请注意,在括号里面的正则表达式符号不会被解释。意味着你不需要加上倒斜杠转义。通过在字符分类的左方括号后加上一个插入字符^,就可以得到非字符类。例如[^0-9]将匹配非数字字符。★在正则表达式开始处使用插入符(^),表明匹配必须发生在字符串的开始处。在正则表达式末尾加上美元符号($),表明匹配必须以这个正则表达式结束。可以同时使用这两个符号,表示整个字符串都需要满足匹配。例如re.compile('^\d+'),以数字开头;re.compile('\d+$')以数字结尾,re.compile('^\d+$')匹配全是数字的字符串。★(.)是通配字符,匹配除了换行符之外的所有字符。注意它只匹配一个字符。例如(.sd)。可以匹配sad,had等等。如果要匹配(.),则使用转义符\.★用(.*)匹配所有的字符。因为(.)可以匹配除了换行符以外的所有字符,(*)可以匹配零次或者多次,所以(.*)可以匹配所有的字符。注意(.*)使用“贪心”模式,它总是匹配尽可能多的字符。要使用“非贪心”模式,使用(.*?)。★(.*)可以匹配除了换行符以外的字符,通过传入re.DOTALL作为re.compile()的第二个参数,可以使得(.)匹配所有的字符,包括换行符。例如re.compile( '.*' ,re.DOTALL)★正则表达式符号复习★不区分大小写的匹配。向re.compile()传入re.IGNORECASE或者re.I作为第二个参数。★用sub()方法替换字符串。regex对象的sub()方法需要传入两个参数,第一个参数是用于替换的字符串,第二个参数是需要替换的字符串。有时候我们需要使用匹配的文本的本身作为替换的一部分,在sub()第一个参数中,可以输入\1,\2,\3……。表示“在替换中输入分组1,2,3……的文本”。注意使用原始字符串。★管理复杂的正则表达式。向re.compile()传入第二个参数re.VERBOSE,可以忽略正则表达式字符串中的空白符和解释。★可以使用管道字符(|)将re.VERBOSE,re.I,re.DOTALL组合起来。例如re.compile("\w+",re.I | re.DOTALL)第八章--读写文件★windows使用“\\”作为文件夹的分隔符,os X和linux使用“/”作为路径分隔符。★os.path.join()可以连接文件的路径。可以连接多个字符串。★os.getcwd()返回当前工作目录。os.chdir()可以改变当前工作路径。★路径中的(.)表示当前目录,(..)表示当前目录的父文件夹。★os.makedirs()创建新文件夹。例如os.makedirs("H:\\python\\test\\')★(1)os.path.abspath(path)返回参数的绝对路径的字符串。    (2)os.path.isabs(path),如果参数是一个绝对路径返回True。    (3)os.path.relpath(path,start)返回从start路径到path的相对路径的字符串。如果没有提供start,则使用当前的工作目录作为开始路径。    (4)os.path.dirname(path)返回path参数最后一个斜杠之前的内容(目录名称)。os.path.basename(path)返回最后一个斜杠之后的内容(基本名称)。调用os.path.split(path)返回一个目录名称和基本名称的元组。★os.path.getsize(path)返回path参数文件的大小。os.listdir(path)返回path路径下的文件组成的列表。★os.path.exists(path)检查路径是否存在,存在返回True。os.path.isfile(path)检查路径是否为文件,os.path.isdir(path)检查路径是否为文件夹。★python读写文件步骤:(1)调用open(path)返回file对象,默认以读('r')的方式打开,以读的方式打开时确认文件是否存在,不存在报错。'w'以写的方式打开,'a'以添加的方式打开。如果文件不存在,写模式和添加模式都会创建一个新的空文件。(2)调用read()和wirte()进行读写文件。readlines()返回字符串列表,注意write()方法不会在字符串的末尾自动添加换行字符,必须自己添加换行字符。(3)close()关闭文件。★用shelve模块可以保存python的变量。利用shelve模块,可以将python程序中的变量保存到二进制的shelf文件中(位于当前目录下,包含3个文件,分别以.bak,.bat,.dir结尾),这样,程序就可以从硬盘中恢复变量的数据。注意shelf值有keys()和values()方法,但是它们返回的是类似列表的值,而不是真正的列表,所以需要用list()转化为列表。shelf值不必用读模式或者写模式打开,因为它们在打开后,既能读又能写。★用pprint.pformat()函数保存变量。pprint.pformat()可以返回一个字符串,你可以将它写入.py文件中,该文件成为你自己的模块,如果需要使用里面存储的变量,就可以导入它。例如存储一个字典或者列表就可以使用这种方法,将字典或者列表转化为字符串写入.py文件。第九章--组织文件★shutil模块的使用(1)复制文件和文件夹shutil.copy(source,destination),将路径source处的文件复制到路径destination处的文件夹。该函数返回一个字符串,表示被复制的路径。shutil.copytree(source,destination),将路径source处的文件夹,包括它的所有的文件和文件夹,复制到路径destination处的文件夹。该函数返回一个字符串,表示被复制的路径。(2)文件和文件夹的移动和改名shutil.move(source,destination),将路径source处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。注意,确保destination文件或者文件夹的存在。(3)删除文件和文件夹利用os模块中的函数,可以删除一个文件或者一个空文件夹,但是利用shutil模块可以删除一个文件夹及其所有的内容。os.unlink(path) 删除path处的文件os.rmdir(path)  删除path处的文件夹。注意该文件夹必须为空,没有任何文件和文件夹shutil.rmtree(path) 删除path处的文件夹,包含的文件和文件夹都会被删除★安全删除文件和文件夹os模块和shutil模块的删除函数是不可恢复的,是永久删除的,为了确保安全,使用send2trash模块可以将删除的文件或者文件发送到计算机的回收站,而不是永久删除。调用send2trash.send2trash(path)即可删除文件或者文件夹。★遍历目录树(P161)使用os.walk(path)可以遍历目录树,os.walk()在循环的每次迭代中会返回3个值:(1)当前文件夹名称的字符串(2)当前文件夹中子文件夹的字符串列表(3)当前文件夹中文件的字符串列表例如下面这个例子,左边是目录树,右边是遍历输出结果。★用zipfile模块压缩文件(P162)(1)读取zip文件要读取zip文件的内容,首先必须创建一个ZipFile对象。调用zipfile.ZipFile(path)可以创建一个ZipFile对象。ZipFile对象有一个namelist()方法,它会返回ZIP文件中包含的所有文件和文件夹的字符串列表。这些字符串可以传递给ZipFile对象的getinfo()方法,返回特定文件的ZipInfo对象,ZipInfo对象有自己的属性,file_size表示原来文件的大小,compress_size表示压缩后的大小。(2)从ZIP文件中解压缩ZipFile对象的extractall()方法从zip文件中解压缩所有的文件和文件夹,放在当前工作目录中。当然你也可以传入path指定解压缩的路径。而extract()解压缩单个文件,传递给extract()的字符串必须匹配namelist()返回的字符串列表中的一个。extract()接受第二个参数,表示解压缩的路径。(3)创建和添加文件到zip文件创建自己的压缩文件,必须以“写模式”打开ZipFile对象,即传入'w'作为第二个参数。调用ZipFile对象的write()方法可以压缩文件到zip文件,write()方法接受两个参数,第一个参数表示要压缩的文件,第二个参数表示压缩的算法,可以使用默认的算法。注意,如果是添加文件,需要使用“添加模式”('a')。★os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表第十章--调式★只要抛出的异常没有被处理,python就会显示反向追踪。利用traceback模块的format_exec()函数可以得到追踪的字符串形式。★利用断言可以检查变量值,如果检查失败,则抛出异常。assert语句包括以下部分:assert   条件(即求值为True或者False的表达式) , 当条件为False时显示的字符串★在运行python程序(命令行)时传入-O选项,可以禁用断言。★使用日志(logging)来记录错误:(P178)日志一共分为5个级别:DEBUG,INFO,WARNING,ERROR,CRITICAL(级别递增)向basicConfig()函数传入level,这将显示级别及以上的消息。例如level=logging.ERROR可以显示ERROR和CRITICAL。传入filename可以将日志写入文件,不会显示在屏幕。向logging.disable()传入一个日志级别,它就会禁止该级别及更低级别的日志信息。第十一章--从web抓取信息★调用webbrowser模块中的open函数可以启动一个浏览器,打开指定的URL。★用requests模块从web上下载文件(P192)(1)用requests.get()可以下载一个网页,该函数返回一个Response对象,包含了web服务器做出的相应。Response对象拥有status_code属性,表示请求是否成功,如果请求成功,下载的页面作为一个字符串,保存在Response对象的text属性里面。也可以调用raise_for_status()方法检查是否下载成功,如果失败就会抛出异常。(2)可以将下载的文件保存到硬盘,但是注意需要以“写二进制”的形式打开文件,即“wb”或“ab”,目的是为了保存该文件中的“Unicode编码”。Response对象的iter_content()方法在循环的每次迭代中,返回一段内容。每段都是bytes数据类型。
★用BeautifulSoup模块解析HTML(P199)
(1)利用bs4.BeautifulSoup()函数可以创建一个BeautifulSoup对象,需要传入一个字符串,其中包含要解析的HTML。可以传入Resquest对象的text属性或者一个File对象。
(2)利用select()方法可以寻找元素,传入CSS选择器即可。返回一个Tag对象列表。调用getText()可以获取文本内容。调用get('attr')可以获取属性值。
★(1)os.mkdir(path)创建一个目录,可以是相对或者绝对路径。如果目录有多级,则创建最后一级,如果最后一级的目录的上级不存在,则抛出异常。(2)os.mkdirs(path)创建递归的目录树,可以是相对或者绝对路径。如果子目录创建失败或者已经存在,则会抛出抛出异常。设置关键字参数exist_ok=True在该文件夹已经存在时,防止该函数抛出异常。★利用selenium模块可以控制浏览器,实现表单自动化处理等等。(P210)

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python
相关文章推荐