至于python中re模块split方法的应用

【转】关于python中re模块split方法的运用,pythonsplit

注:近日在研商文本管理,供给用到正则切割文本,所以收索到了那篇小说,很有用,谢谢原著者。

原址:

威尼斯网址开户网站,关于python中re模块split方法的运用
已有 3094 次阅读 二零一五-3-12 11:30 |系统一分配类:实验研讨笔记

后天在写一段小代码的时候要求用到re.split()方法,在采用的历程中发掘了三个在先不清楚的新用法,发掘那么些用法如故挺实用的,就把它记录下来:

>>> m = re.split( ‘\d+’ , ’dkjj23jjjj44’)

>>>m

[‘dkjj’ , ‘jjjj’ , ‘’ ]

>>> m = re.split( ‘(\d+)’ , ’dkjj23jjjj44’)            
#相配部分加上()

>>>m

[‘dkjj’ , ‘23’ , ‘jjjj’ , ‘44’ , ‘’ ]

>>> m = re.split( ‘\d+’ , ’dkjj23jjjj44as’)           
#万分界分加上了()

>>>m

[‘dkjj’ , ‘jjjj’ , ‘as’ ]

>>> m = re.split( ‘(\d+)’ , ’dkjj23jjjj44as’)

>>>m

[‘dkjj’ , ‘23’ , ‘jjjj’ , ‘44’ , ‘as’ ]

在非常部分加上()之后所切出的结果是例外的,未有()的未有保留所相配的项,不过有()的却能够保留了合营的项,这些在有个别供给保留非常部分的采取进度是非常首要的。

注:近日在切磋文本管理,供给用到正则切割文本,所以收索到了那篇小说,很有用,谢…

注:前段时间在研究文本处理,供给用到正则切割文本,所以收索到了那篇作品,很有用,多谢原文者。

前几日在写一段小代码的时候需求用到re.split()方法,在应用的经过中窥见了四个在先不掌握的新用法,开掘这么些用法依然挺实用的,就把它记录下来:

python三番五次mysql
的方案有oursql、PyMySQL、 myconnpy、MySQL Connector
等,可是本篇要说实在是另外叁个类库MySQLdb,MySQLdb
是用来Python链接Mysql数据库的接口,它达成了
Python 数据库 API 标准 V2.0,基于 MySQL
C API
上确立的。能够从:https://pypi.python.org/pypi/MySQL-python
进行获取和装置,何况相当多发行版的linux源里皆有该模块,能够直接通过源安装。

cookielib是三个自动处理cookies的模块,借使大家在采纳爬虫等手艺的时候须要保留cookie,那么cookielib会让您一石二鸟!他最广大的搭档模块便是python下的urllib和request。

原址:

    >>> m = re.split( ‘\d+’ , ’dkjj23jjjj44’)
    >>>m
    [‘dkjj’ , ‘jjjj’ , ‘’ ]
    >>> m = re.split( ‘(\d+)’ , ’dkjj23jjjj44’)             #匹配部分加上()
    >>>m
    [‘dkjj’ , ‘23’ , ‘jjjj’ , ‘44’ , ‘’ ]
    >>> m = re.split( ‘\d+’ , ’dkjj23jjjj44as’)            #匹配部分加上了()
    >>>m
    [‘dkjj’ , ‘jjjj’ , ‘as’ ]
    >>> m = re.split( ‘(\d+)’ , ’dkjj23jjjj44as’)
    >>>m
    [‘dkjj’ , ‘23’ , ‘jjjj’ , ‘44’ , ‘as’ ]

一、数据库连接
MySQLdb提供了connect方法用来和数据库创设连接,接收数个参数,再次回到连接对象:

可是老高在使用cookielib的时候总是境遇这么那样的主题素材,在查阅cookielib的源码后,有所顿悟。

关于python中re模块split方法的运用
已有 3094 次阅读 二〇一六-3-12 11:30 |系统分类:调研笔记

在极度部分加上()之后所切出的结果是见仁见智的,未有()的尚未保存所相称的项,然则有()的却能够保留了合作的项,这些在少数需求保留极度部分的应用进程是比较重大的。

 代码如下

I. 核心类

明日在写一段小代码的时候须求用到re.split()方法,在利用的经过中发掘了贰个原先不明白的新用法,开采那些用法依然挺实用的,就把它记录下来:

conn=MySQLdb.connect(host=”localhost”,user=”root”,passwd=”361way”,db=”test”,charset=”utf8″)

Cookie

>>> m = re.split( ‘\d+’ , ’dkjj23jjjj44’)

正如常用的参数满含:

该类达成了Netscape and 奥迪Q7FC 2965
cookies定义的cookie标准,基本得以清楚为某一条cookie数据。

>>>m

host:数据库主机名.私下认可是用本地主机
user:数据库登录名.私下认可是当前客商
passwd:数据库登入的秘密.默以为空
db:要选用的数据库名.未有暗中同意值
port:MySQL服务应用的TCP端口.私下认可是3306
charset:数据库编码
越多关于参数的信息能够查这里

有的代码如下,比非常多质量是否很纯熟?

[‘dkjj’ , ‘jjjj’ , ‘’ ]

下一场,那么些接二连三对象也提供了对事情操作的支撑,规范的主意:

        self.domain_initial_dot = domain_initial_dot
        self.path = path
        self.path_specified = path_specified
        self.secure = secure
        self.expires = expires
        self.discard = discard
        self.comment = comment
        self.comment_url = comment_url
        self.rfc2109 = rfc2109
CookiePolicy

>>> m = re.split( ‘(\d+)’ , ’dkjj23jjjj44’)            
#相称部分加上()

commit() 提交
rollback() 回滚
二个轻易的查询示例:

该类的首要功效是收发cookie,即确定保证正确的cookie发往对应的域名,反之同样。

>>>m

 代码如下

DefaultCookiePolicy

[‘dkjj’ , ‘23’ , ‘jjjj’ , ‘44’ , ‘’ ]

#!/usr/bin/python
# encoding: utf-8
import MySQLdb
# 张开数据库连接
db = MySQLdb.connect(“localhost”,”root”,”361way”,”test” )
# 使用cursor()方法获得操作游标
cursor = db.cursor()
# 使用execute方法推行SQL语句
cursor.execute(“SELECT VERSION()”)
# 使用 fetchone() 方法猎取一条数据库。
data = cursor.fetchone()
print “Database version : %s ” % data
# 关闭数据库连接
db.close()
本子实践结果如下:

此类完成了库克iePolicy的接口。

>>> m = re.split( ‘\d+’ , ’dkjj23jjjj44as’)           
#相称部分加上了()

Database version : 5.5.40

CookieJar

>>>m

二、cursor方法实践与重返值

库克ieJar是cookie的集合,能够包蕴有无数库克ie类,是大家的尤为重要操作对象。里面有一雨后春笋的艺术能够扶助特别周到的操作!

[‘dkjj’ , ‘jjjj’ , ‘as’ ]

 代码如下

FileCookieJar

>>> m = re.split( ‘(\d+)’ , ’dkjj23jjjj44as’)

cursor方法提供两类操作:1.实行命令,2.收到再次来到值 。

该类承袭自CookieJar,CookieJar只是在内部存款和储蓄器中做到自身的生命周期,FileCookieJar的子类能够达成数量持久化,定义了save、load、revert多少个接口。

>>>m

cursor用来实施命令的方法

MozillaCookieJar & LWPCookieJar

[‘dkjj’ , ‘23’ , ‘jjjj’ , ‘44’ , ‘as’ ]

//用来实行存款和储蓄进程,接收的参数为存款和储蓄进程名和参数列表,重临值为受影响的行数
callproc(self, procname, args)
//试行单条sql语句,接收的参数为sql语句笔者和选拔的参数列表,重临值为受影响的行数
execute(self, query, args)
//施行单挑sql语句,可是再次试行参数列表里的参数,重返值为受影响的行数
executemany(self, query, args)
//移动到下二个结出集
nextset(self)
cursor用来接收再次回到值的措施

多少个完结类,承袭关系如下:

在合作部分加上()之后所切出的结果是例外的,未有()的远非保留所相配的项,但是有()的却能够保留了拾分的项,那么些在好几须要保留格外界分的接纳进程是非常首要的。

//接收全体的回到结果行.
fetchall(self)
//接收size条回来结果行.假若size的值大于重回的结果行的数量,则会回来cursor.arraysize条数据
fetchmany(self, size=None)
//重临一条结果行
fetchone(self)
//移动指针到某一行.倘若mode=’relative’,则表示从此时此刻所在行活动value条,即使mode=’absolute’,则象征从结果集的率先行活动value条
scroll(self, value, mode=’relative’)
//那是二个只读属性,并回到实施execute()方法后影响的行数
rowcount

MozillaCookieJar & LWPCookieJar

三、数据库操作示
1、创建database tables

II. 使用

一旦数据库连接存在大家得以使用execute()方法来为数据库创制表,如下所示创立表EMPLOYEE:

简单例子

 代码如下

一段轻便的行使代码

#!/usr/bin/python
# encoding: utf-8
import MySQLdb
# 张开数据库连接
db = MySQLdb.connect(“localhost”,”root”,”361way”,”test” )
# 使用cursor()方法获得操作游标
cursor = db.cursor()
# 假诺数据表已经存在利用 execute() 方法删除表。
cursor.execute(“DROP TABLE IF EXISTS EMPLOYEE”)
# 创设数量表SQL语句
sql = “””CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,
         SEX CHAR(1),
         INCOME FLOAT )”””
cursor.execute(sql)
# 关闭数据库连接
db.close()

#!/usr/bin/env python
# encoding: utf-8

2、数据库插入操作

import requests
import cookielib

 代码如下

url = ”
jar = cookielib.LWPCookieJar(‘cookie.txt’)

#!/usr/bin/python
# encoding: utf-8
import MySQLdb
# 张开数据库连接
db = MySQLdb.connect(“localhost”,”root”,”361way”,”test” )
# 使用cursor()方法取得操作游标
cursor = db.cursor()
# SQL 插入语句
sql = “””INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)”””
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库实施
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()
# 关闭数据库连接
db.close()

# 试着载入cookie
# 提一个标题,为啥要步向ignore_discard属性?
try:
    jar.load(ignore_discard=True)
except:
    pass

这边是叁个单sql
试行的亲自去做,cursor.executemany的事必躬亲能够参照以前作者写的aws
主机资金财产处理种类的示范。

# 创设一个session
s = requests.Session()

上例也足以写成通过占位符传参的方法进行施行,如下:

# 设定 headers与cookies
s.headers = {‘user-agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X
10_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93
Safari/537.36’}
s.cookies = jar

 代码如下

# 访问url
r = s.get(url)

#!/usr/bin/python
# encoding: utf-8
import MySQLdb
# 展开数据库连接
db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )
# 使用cursor()方法赢得操作游标
cursor = db.cursor()
# SQL 插入语句
sql = “INSERT INTO EMPLOYEE(FIRST_NAME, \
       LAST_NAME, AGE, SEX, INCOME) \
       VALUES (‘%s’, ‘%s’, ‘%d’, ‘%c’, ‘%d’ )” % \
       (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库试行
   db.commit()
except:
   # 产生错误时回滚
   db.rollback()
# 关闭数据库连接
db.close()
也得以以变量的主意传送参数,如下:

# 持久化cookie
jar.save(ignore_discard=True)

…………………………….
user_id = “test”
password = “password123”
con.execute(‘insert into Login values(“%s”, “%s”)’ % \
             (user_id, password))
…………………………….

# 打印cookie
for item in jar:
    print “cookie name : %s —- value: %s” % (item.name, item.value)
咱俩赢得如下cookie

3、数据库查询操作

cat cookie.txt

以查询EMPLOYEE表中salary(薪俸)字段大于一千的兼具数据为例:

#LWP-Cookies-2.0
Set-Cookie3: BAIDUID=”2F5340B39928231AA09353CDAE3DA14D:FG=1″; path=”/”;
domain=”.baidu.com”; path_spec; domain_dot; expires=”2083-07-09
16:27:51Z”; version=0
Set-Cookie3: BIDUPSID=2F5340B39928231AA09353CDAE3DA14D; path=”/”;
domain=”.baidu.com”; path_spec; domain_dot; expires=”2083-07-09
16:27:51Z”; version=0
Set-Cookie3:
H_PS_PSSID=14872_1457_14412_14509_14444_12826_10812_14430_12868_14871_12723_14962_14919_14902_15384_12095_13937_15963;
path=”/”; domain=”.baidu.com”; path_spec; domain_dot; discard;
version=0
Set-Cookie3: PSTM=1434892424; path=”/”; domain=”.baidu.com”; path_spec;
domain_dot; expires=”2083-07-09 16:27:51Z”; version=0
Set-Cookie3: BDSVRTM=0; path=”/”; domain=”www.baidu.com”; path_spec;
discard; version=0
Set-Cookie3: BD_HOME=0; path=”/”; domain=”www.baidu.com”; path_spec;
discard; version=0
转移贰个Cookie类

 代码如下

大家由Cookie的概念能够总结的改造一条cookie

#!/usr/bin/python
# encoding: utf-8
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect(“localhost”,”root”,”361way”,”test” )
# 使用cursor()方法获得操作游标
cursor = db.cursor()
# SQL 查询语句
sql = “SELECT * FROM EMPLOYEE \
       WHERE INCOME > ‘%d'” % (1000)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 获取具备记录列表
   results = cursor.fetchall()
   for row in results:
      fname = row[0]
      lname = row[1]
      age = row[2]
      sex = row[3]
      income = row[4]
      # 打字与印刷结果
      print “fname=%s,lname=%s,age=%d,sex=%s,income=%d” % \
             (fname, lname, age, sex, income )
except:
   print “Error: unable to fecth data”
# 关闭数据库连接
db.close()
上述脚本施行结果如下:

import cookielib

fname=Mac, lname=Mohan, age=20, sex=M, income=2000

class Cookie:
    def __init__(self, version, name, value,
                 port, port_specified,
                 domain, domain_specified, domain_initial_dot,
                 path, path_specified,
                 secure,
                 expires,
                 discard,
                 comment,
                 comment_url,
                 rest,
                 rfc2109=False,
                 ):
         …..

4、数据库更新操作

# 起首化叁个cookie

立异操功效于更新数据表的的多少,以下实例将 test表中的 SEX 字段整个修改为
‘M’,AGE 字段递增1:

def createCookie(name, value, domain, expires=None):
    return cookielib.Cookie(
        version=None,
        name=name,
        value=value,
        port=’80’,
        port_specified=True,
        domain=domain,
        domain_specified=True,
        domain_initial_dot=False,
        path=’/’,
        path_specified=True,
        secure=False,
        expires=expires,
        discard=False,
        comment=None,
        comment_url=None,
        rest=None,
        rfc2109=False
    )

 代码如下

new_cookie = createCookie(‘phpgao’, ‘laogao’, ‘www.phpgao.com’,
‘1434977736’)

# encoding: utf-8
#!/usr/bin/python
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect(“localhost”,”root”,”361way”,”test” )
# 使用cursor()方法获得操作游标
cursor = db.cursor()
# SQL 更新语句
sql = “UPDATE EMPLOYEE SET AGE = AGE + 1
                          WHERE SEX = ‘%c'” % (‘M’)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交到数据库实施
   db.commit()
except:
   # 产生错误时回滚
   db.rollback()
# 关闭数据库连接
db.close()

# 插足到现存cookies

5、实行工作

mycookie = cookielib.CookieJar()
mycookie.set_cookie(new_cookie)

作业机制得以确定保证数量一致性。

工作应该负有4个属性:原子性、一致性、隔开性、长久性。那多个性情日常称为ACID脾性。

原子性(atomicity)。八个事务是一个不可分割的办事单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事必得得是使数据库从多少个一致性状态变到另三个一致性状态。一致性与原子性是全面相关的。
隔开分离性(isolation)。二个事务的实践不能够被别的工作干扰。即叁个政工内部的操作及利用的多少对出现的别的事情是隔断的,并发施行的依次业务之间不能够相互困扰。
长久性(durability)。持续性也称长久性(permanence),指贰个事业一旦付出,它对数据库中多少的更动就应当是长久性的。接下来的别样操作或故障不应该对其有其余影响。
Python DB API 2.0 的政工提供了八个格局 commit 或 rollback。实例:

 代码如下

# SQL删除记录语句
sql = “DELETE FROM EMPLOYEE WHERE AGE > ‘%d'” % (20)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 向数据库提交
   db.commit()
except:
   # 产生错误时回滚
   db.rollback()

对于帮助专门的学问的数据库,
在Python数据库编制程序中,当游标创设之时,就活动伊始了三个藏匿的数据库事务。commit()方法游标的富有更新操作,rollback()方法回滚当前游标的具有操作。每二个办法都起来了多少个新的事体。

相关文章