资讯专栏INFORMATION COLUMN

讲点python基础知识

yzd / 3499人阅读

摘要:函数编译成对象,加快程序忽略大小写不包括换行符内的所有字符做本地化识别匹配多行字符串正则表达式为多行搜索字符串,以列表形式返回。

运算符

类型


程序结构

1.分支结构
例:

代码设计:

# -*- coding:utf-8 -*-
x=int(raw_input("输入x值:"))
if x<=0:
    f=x**2
    print f
else:
    f=x**3
    print f

三段以上条件则:if,elif,else

2.循环结构
range(起始值,终止值,步长)

range(0,20)#0到19的数

例:打印19个“我要吃饭”

#用for遍历19个循环
for x in range(1,20):
    print x,"I want to eat"

continue:结束当次循环
break:结束整个循环

for x in range(1,20):
    if x==2:
        print x,"I don"t want to eat"
        continue #x=2时,执行"我不想吃",其他不变
    if x==4:
        print x,"233333"
        break   #x=4时,执行23333,x=[5-19]都不能执行
    
    print x,"I want to eat"
正则表达式

作用:字符串(str)匹配模式(re)

代码实例:

import re
str="abc,afc,amc,aic,^abc"
res=r"a[bf]c"#结果:["abc", "afc"]
print re.findall(res,str)

res=r"a[^bf]c"#取反:["amc", "aic"]
res=r"^abc"#取消所有元字符,匹配["^abc"]
res=r"ab+"#匹配ab,abbbbbb之类
res=r"ab*"#匹配a,ab,abbbbbb之类
str="010-123456789"
res=r"010-?d{8}"#匹配电话号码

贪婪模式:尽可能大的匹配。
非贪婪模式:.? 是一个固定的搭配,.和代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,以后我们还会大量用到 .*? 的搭配。

函数:
re.compile(pattrn,flags):编译成对象,加快程序
flags:
1.re.I: 忽略大小写
2.re.S: 不包括换行符内的所有字符
3.re.L:做本地化识别
4.re.M:匹配多行字符串
5.re.X:正则表达式为多行

re.findall(pattern, string):搜索字符串,以列表形式返回。
re.match():尝试从字符串的开始匹配一个模式
re.search():在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
re.sub():替换。
re.split():切割。

例:
re.S的用法(匹配 , 之类的换行符)

import re
str="abc
oooass"
res="w{3}.w{6}"
a=re.compile(res,re.S)
print a.findall(str)

re.M的用法(字符串多行)

import re
str="""
abc oo
abc ooo
ooo abc
sia abc
"""
res="^abc"
a=re.compile(res,re.M)
print a.findall(str)

re.X用法(正则写多行)

import re
str="010-12345678"
res="""
d{3,4}
-?
d{8}
"""
a=re.compile(res,re.X)
print a.findall(str)

re.search():一般是用来查询文件中是否有我们想要的字符串,group()输出

import re
str = "Daming is a handsome boy, he is cool "
m = re.search(r"(w+)s", str)
if m:
    print m.group(0), "
", m.group(1)
else:
    print "not match"

re.sub():

import re
r=r"c..t"
print re.sub(r,"python","csvt csst csft")

re.split():

import re
str="101+123-123*12233/123"
res=r"[-+*/]"
print re.split(res,str)
写一个简单的下载贴吧图片小爬虫
import re
import urllib

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):
    reg = r"src="(.+?.jpg)" pic_ext"
    imgre = re.compile(reg)
    imglist = imgre.findall(html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,"%s.jpg" % x)
        x = x + 1        
   
html = getHtml("http://tieba.baidu.com/p/2460150866")
getImg(html)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37630.html

相关文章

  • 从0开始用python写一个命令行小游戏(四)

    摘要:讲点搞笑的,最近在开发时,发现最令程序猿头疼的一点就是没有语句。但自动的僵尸呢哎,别急,那是后话下集预告下次,我要把游戏变得全自动具体工作令僵尸自动出现,和让用户用命令控制游戏这些工作完成后,就可以发布了欢迎继续关注 嗯,还是我,我又回来了——以后文章就两天一篇吧。讲点搞笑的,最近在开发v1.1 beta 3时,发现Python最令程序猿头疼的一点就是没有switch/case语句。要...

    graf 评论0 收藏0
  • python

    Python装饰器为什么难理解? 无论项目中还是面试都离不开装饰器话题,装饰器的强大在于它能够在不修改原有业务逻辑的情况下对代码进行扩展,权限校验、用户认证、日志记录、性能测试、事务处理、缓存等都是装饰器的绝佳应用场景,它能够最大程度地对代码进行复用。 但为什么初学者对装饰器的理解如此困难,我认为本质上是对Py… Python 实现车牌定位及分割 作者用 Python 实现车牌定位及分割的实践。 ...

    chenatu 评论0 收藏0
  • Python】逆向JavaScript,深度解析Q群成员数据的采集与邮件的来源,阅读完后你就明白了

    摘要:在这里真心感谢一直在支持我的那几个粉丝,谢谢你们的持续关注点赞。果然,第三个包也是按的步差来的,而为零不变,也不变。函数里面的话就是个循环咯,当条件不满足时就一直加,知道条件满足为止。我每天都会抽时间给我的粉丝解答,给与一些学习资源。 目录 前言 准备工作 分析(x0) 分析(x1) 分析(...

    dkzwm 评论0 收藏0
  • 走进Vue时代进阶篇(01):重构电商购物车模块

    摘要:欢迎你们跟着闰土大叔走进时代。其中购买数量可以增加或减少,每类商品还可以从购物车中移除。后记这大概就是一次用重构电商项目中的购物车模块的所有实现过程。作者闰土大叔链接来源掘金著作权归作者所有。 前言 从这篇文章开始,我准备给大家分享一些关于Vue.js这门框架的技巧性系列文章,正好我们公司项目中也用到了Vue。所以,教是最好的学。进阶篇比较适合于二三线城市,还在小厂打拼的童鞋们。欢迎你...

    kk_miles 评论0 收藏0
  • IntersectionObserver介绍

    摘要:允许你追踪目标元素与其祖先元素或视窗的交叉状态。此外,尽管只有一部分元素出现在视窗中,哪怕只有一像素,也可以选择触发回调函数。即只有线程空闲下来,才会执行观察器。 允许你追踪目标元素与其祖先元素或视窗的交叉状态。此外,尽管只有一部分元素出现在视窗中,哪怕只有一像素,也可以选择触发回调函数。 IntersectionObserver 为什么需要它 ? 在我们需要监听目标元素是否进入视口时...

    PAMPANG 评论0 收藏0

发表评论

0条评论

yzd

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<