python函数

Python——迭代器的几个高级用法

喜欢而已 提交于 2020-03-31 14:45:58
今天我们依然介绍的是迭代器,不过介绍的是几个比较常用的 高级用法 ,在实际场景当中非常实用,可以帮助我们大大简化代码的复杂度。 跳过开头 首先是跳过开始部分,这个在我们读取文本的时候最常用。在实际的应用当中,比如记录的日志或者是代码等等,一般来说 头部都会附上一段说明 ,或者用注释标注或者是用特殊的符号标记。这些信息是给用到数据的程序员看的,当我们通过代码获取数据的时候,显然是希望可以过滤掉这些信息的。 比如我们有一段数据,它的开头用#做了一些注释: # This is a data for student # Rows 100 xiaoming, 17, 99; xiaoli, 18, 98; ... 常规操作当中,我们会创建一个打开文件的迭代器,我们通过遍历这个迭代器去获取文件当中的数据: with open('xxxx.txt') as f: for line in f: print(line) 如果只是用来输出还好,如果我们需要加工文件当中的数据,那么头部的注释信息就会干扰我们代码的运行。我们当然可以手动加入一些判断,但是这会比较麻烦,代码也不够美观。针对这个问题,一个比较好的解决方案是 dropwhile 。 dropwhile是itemtools当中的一个函数,它可以 接收一个我们自定义的过滤函数和迭代器重新生成一个新的迭代器

一篇文章教会你使用Python定时抓取微博评论

我的梦境 提交于 2020-03-31 08:23:36
【Part1——理论篇】 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存。首先从微博api寻找抓取评论的接口,如下图所示。 但是很不幸,该接口频率受限,抓不了几次就被禁了,还没有开始起飞,就凉凉了。 接下来小编又选择微博的移动端网站,先登录,然后找到我们想要抓取评论的微博,打开浏览器自带流量分析工具,一直下拉评论,找到评论数据接口,如下图所示。 之后点击“参数”选项卡,可以看到参数为下图所示的内容: 可以看到总共有4个参数,其中第1、2个参数为该条微博的id,就像人的身份证号一样,这个相当于该条微博的“身份证号”,max_id是变换页码的参数,每次都要变化,下次的max_id参数值在本次请求的返回数据中。 【Part2——实战篇】 有了上文的基础之后,下面我们开始撸代码,使用Python进行实现。 1、首先区分url,第一次不需要max_id,第二次需要用第一次返回的max_id。 2、请求的时候需要带上cookie数据,微博cookie的有效期比较长,足够抓一条微博的评论数据了,cookie数据可以从浏览器分析工具中找到。 3、然后将返回数据转换成json格式,取出评论内容、评论者昵称和评论时间等数据,输出结果如下图所示。 4、为了保存评论内容,我们要将评论中的表情去掉

Python异常抛出后使用except接收的原因

我是研究僧i 提交于 2020-03-31 08:18:05
首先我们来看一个具有异常抛出功能的程序: def register(): username=input("please input your user name: ") if len(username)<6: raise Exception("the str must be over 6 places") else: print("the user name you have input is ", username) try: register() except Exception as e: print(e) print("rigister failed") else: print("rigister succeed")#如果没有执行except,那么直接执行 finally: print("the program is over") 在这一段代码当中,运用了最为典型的Python异常处理的结构,首先try,然后except,然后else,最后finally。同时我们在程序的最上方定义了一个rigister()函数,将会在下方的try语句里进行调用,这个函数的意思是:如果说输入的用户名称位数小于6位则报错,并抛出异常,没有的话则说明输入正确。但是既然已经抛出了异常我们为什么还需要用except语句呢? 原因是我们抛出异常之后只是系统知道了有这个异常,但是并没有对它进行处理

Python Print函数用法

谁说胖子不能爱 提交于 2020-03-31 04:11:24
Python print 函数用法, print 格式化输出 使用 print 输出各型的 字符串 整数 浮点数 出度及精度控制 strHello = 'Hello Python' print strHello #输出结果:Hello Python#直接出字符串 1.格式化输出整数 python print 也支持参数格式化,与C言的printf似, strHello = "the length of (%s) is %d" %('Hello World',len('Hello World')) print strHello #输出果:the length of (Hello World) is 11 2.格式化输出16制整数 nHex = 0x20#%x --- hex 十六进制#%d --- dec 十进制#%d --- oct 八进制 print "nHex = %x,nDec = %d,nOct = %o" %(nHex,nHex,nHex) #输出结果:nHex = 20,nDec = 32,nOct = 40#使用整数的各个制打印同一个数 3.格式化输出浮点数(float) import math#default print "PI = %f" % math.pi#width = 10,precise = 3,align = left print "PI = %10

Python基础语法

巧了我就是萌 提交于 2020-03-31 03:47:44
Python编码规范 类名首字母大写,对象名小写。 类的属性与方法名以对象作为前缀。 类的私有变量、私有方法以两个下划线作为前缀。 函数名通常采用小写,并用下划线或者单词首字母大写增强可读性。 Python的注释以 # 开头,后面的文字直到行尾都算注释 Python的编码通过缩进表示每行代码之间的层次关系。如下 x=1 if x == 1: print"x=",x #代码缩进 else: print"x=",x #代码缩进 x = x + 1 #代码缩进 print"x=",x Python中语句可以用 ; 结束语句,也可以省略 #下面两句语句等价 print"hello" print"hello"; 但是在同一行中有多条语句,就必须用分号隔离 #使用分号分隔语句 x = 1 ; y = 1 ; x= 1 对于一些一行代码比较长的语句。 Python支持多行写一条语句, Python使用 \ 作为多行语句连接符。 以下为两种写法 写法一只用了一对双引号, 写法二用了两对双引号,写法二比写法一的可读性强。 注 : \ 用来链接字符串时,后不能有任何代码,包括注释 print"hello \ world" print"hello "\ "world" 输出结果都为 hello world Python有的编辑器是不支持中文字符的, 用到中文需要在最顶部添加 # -*- coding:

Python学习宝典,Python400集让你成为从零基础到手写神经网络的Python大神

若如初见. 提交于 2020-03-30 22:54:22
当您学完Python,你学到了什么? 开发网站! 或者, 基础语法要点、函数、面向对象编程、调试、IO编程、进程与线程、正则表达式。。。 当你学完Python,你可以干什么? 当程序员! 或者, 手写数据结构和算法、手写神经网络项目。 用Python来爬取一些美女照片 OR 笑话段子开心开心。 好了,切入正题,Python从入门到精通,需要多长时间?从精通到找到一份月薪过万的开发工作,需要几个月? 尚学堂继java300集之后又一力作-- Python400集 ,如果你学完这部Python宝典就知道了。 阅读本文的您是非常有福的。 为什么这么说? 那就先来看看这个Python400集介绍和内容吧 1、python400集简介 本套Python课程400集,从零基础开始,全面讲解Python基础,直达可以手写神经网络的境界。 我们创造性的增加了:手写数据结构和算法、手写神经网络项目。让零基础学员在学习Python时就开始接触高深的底层知识、神经网络底层实现的知识。 2、python400集内容 内容共分26章,讲解了Python基础的方方面面,可以作为Python学习者的“宝典”。同时,穿插了3个大型实战项目: a. 坦克大战游戏。 采用游戏开发的方式,寓教于乐,快乐中掌握Python基础。 b. 手写算法和数据结构。 算法和数据结构是很多大公司面试的不二选择,我们这里讲解内容的同时

python--初识面向对象

≡放荡痞女 提交于 2020-03-30 21:33:12
一 . 初识面向对象 面向过程:   一切以事务的发展流程为中心. 面向对象:   一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方:   大象进冰箱     步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门     面向对象:大象, 你进冰箱.       此时主语是大象. 我操纵的是大象. 此时的大象就是对象 二 . 类.对象 类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.   对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象   类与对象的关系:     类是对xxx事物的归类.       写:         __init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装.         def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.           pass     对象是xx类型的一个具体       创建对象: 类名() 创建类:     class 类名:       def __init__(self): # 初始化方法. 又被成为构造方法         self.属性 = 值         self.属性 = 值         self.属性 = 值       def fangfa(self):   

Python-递归初识-50

六月ゝ 毕业季﹏ 提交于 2020-03-30 17:21:52
#递归函数 # 了解什么是递归 : 在函数中调用自身函数 # 最大递归深度默认是997/998 —— 是python从内存角度出发做得限制 # 能看懂递归 # 能知道递归的应用场景 # 初识递归 —— # 算法 —— 二分查找算法 # 三级菜单 —— 递归实现 # while True: # print('从前有座山') def story(): print('从前有座山') story() print(111) story() #RecursionError: maximum recursion depth exceeded while calling a Python object# 递归的错误,超过了递归的最大深度 import sys sys.setrecursionlimit(1000000) n = 0 def story(): global n n += 1 print(n) story() story() def age(n): if n == 4: return 40 elif n >0 and n < 4: return age(n+1) + 2 # print(age(1)) 来源: https://www.cnblogs.com/LXL616/p/10708472.html

Python文件逐行写入

假装没事ソ 提交于 2020-03-30 16:41:48
一般情况下我们在利用write函数进行文件的写入的时候,写入的下一个字符串或者数字等会覆盖之前已经写入到文件当中的字符串或者数字,我们如何解决这个问题呢?方法很简单,在使用open函数打开文件的时候,把后面的参数“w”替换成"a"即可。比如下面我们需要在一个txt文件内写入这样的内容: 也就是每一行都是一个数字,数字每换一行则增加1,我们的程序就可以这样写; # Write your code here i=1 f=open("numbers.txt","a")#利用追加模式,参数从w替换为a即可 while i <= 10: f.write("{}\n".format(i)) i=i+1 f.close() 这样就可以进行逐行写入字符串和数字啦! 来源: https://www.cnblogs.com/geeksongs/p/12599077.html

Python实现Wordcloud生成词云图的示例

主宰稳场 提交于 2020-03-30 16:22:23
wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型。 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题 (2)精确模式:将句子最精确地切开,适合文本分析 (3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词 下面用一个简单的例子来看一下三种模式的分词区别: import jieba # 全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题 text = "哈利波特是一常优秀的文学作品" seg_list = jieba.cut(text, cut_all=True) print(u"[全模式]: ", "/ ".join(seg_list)) # 精确模式:将句子最精确地切开,适合文本分析 seg_list = jieba.cut(text, cut_all=False) print(u"