講點python基礎知識

運算符

圖片描述

類型

圖片描述
圖片描述

程序結構

  • 1.分支結構
    例:
    圖片描述
    代碼設計:css

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

三段以上條件則:if,elif,elsehtml

  • 2.循環結構
    range(起始值,終止值,步長)python

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)url

代碼實例:
圖片描述spa

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:正則表達式爲多行code

re.findall(pattern, string):搜索字符串,以列表形式返回。
re.match():嘗試從字符串的開始匹配一個模式
re.search():在字符串內查找模式匹配,只到找到第一個匹配而後返回,若是字符串沒有匹配,則返回None。
re.sub():替換。
re.split():切割。htm

例:
re.S的用法(匹配\n,\t之類的換行符)

import re
str="abc\noooass"
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), '\n', 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)
相關文章
相關標籤/搜索