Python快速入门:类、文件操作、正则表达式

简介: Python快速入门:类、文件操作、正则表达式


1. 类

类是用来描述具有相同的属性和方法的集合,定义了该集合中每个对象共有的属性和方法,对象是类的实例,可以调用类的方法。

定义类时,如有父类,则写在类名后面的括号里。如果没有继承任何其他父类,默认父类为object。靠继承进行子类化是创建和定制新类类型的一种方式,子类继承基类的属性,如果子类重写基类构造器,基类构造器就不会被调用(否则被调用),基类构造器必须显式写出才会被执行。

类里定义函数,第一个参数必须是self,代表实例对象本身;__init__函数,在新对象实例化时会自动运行,用于给新对象赋初值,不应当返回任何对象;类内定义函数时,如调用自身或父类的函数与变量,应使用self.函数名self.变量名

混合记法(mixedCase)骆驼记法(camelCase)

  • 类名通常由大写字母打头(如"AddrBookEntry",“RepairShop”)
  • 数据属性使用名词作为名字(如"name", “phone”,“email”)
  • 方法使用谓词(动词加对象, 如"updateEmail"),Python规范推荐使用骆驼记法的下划线方式,如"update_email" 。

Python使用以下编码方式进行访问控制:

  • 单下划线(_foo):表示protected变量,只允许其本身与子类访问,不能用于from module import *
  • 双下划线(__foo):表示private变量,只允许这个类本身访问。
  • 头尾双下划线(__foo__):定义的是特列方法,类似__init__()

issubclass() 判断一个类是否另一个类的子类或子孙类

isinstance() 判断一个对象否另一个给定类的实例

特殊类属性:

name 类的名字(字符串)

doc 类的文档字符串

bases 类的所有父类构成的元组

dict 类的属性(返回一个字典,keys是属性名,values是相应属性对象的数据值)

module 类定义所在的模块

class 实例对于的类

e.g.

定义类AddrBookEntry

class AddrBookEntry(object):
    def __init__(self,id,nm,ph):
        self.empid = id
        self.name = nm
        self.phone = ph
        print('Create instance for:', self.name)
    def updatePhone(self,newph):
        self.phone = newph
        print('Update phone for:',self.name)
john = AddrBookEntry(1,'John Doe','408-555-1212')
print(john.name)
print(john.phone)

输出

Create instance for: John Doe

John Doe

408-555-1212

john.updatePhone('415-555-1212')
print(john.phone)

输出

Update phone for: John Doe

415-555-1212

定义类EmplAddrBookEntry

class EmplAddrBookEntry(AddrBookEntry):
    def __init__(self,id,nm,ph,em):
        AddrBookEntry.__init__(self,id,nm,ph)
        self.email = em
    def updateEmail(self,newem):
        self.email = newem
        print('Update email address for:', self.name)
john = EmplAddrBookEntry(1,'John Doe','408-555-1212','john@python.org')
print(john.email)

输出

Create instance for: John Doe

john@python.org

john.updateEmail('john@java.org')
print(john.email)

输出

Update email address for: John Doe

john@java.org

2. 文件操作

使用BIF opne()/file(),打开文件(默认以读方式,若文件含有汉字可使用encoding=‘utf-8’),返回一个文件对象。文件对象访问模式,默认值为’r’

(1)文件对象的访问模式

文件模式 操作
r 只读模式
w 只写模式,创建新文件
a 追加模式(若文件不存在,则创建一个)
r+ 读写模式
w+ 读写模式
a+ 读写模式
rb 二进制读模式
wb 二进制写模式
ab 二进制追加模式
rb+ 二进制读写模式
wb+ 二进制读写模式
ab+ 二进制读写模式

(2) 文件对象的方法

read()读取文件到字符串,如果未给定size参数(默认-1)或size值为负数,将读取整个文件。

readlines()读取文件的所有(剩余)行,返回一个字符串列表(行列表)。

readline()从一个打开的文件每次读取一行数据,将整行(含行结束符)作为字符串返回。如果未给定size参数(默认-1)或size值为负数,读取至行结束符。当没有足够内存可以一次读取整个文件时,使用readline()。

write()将字符串写入文件

seek()方法可以将文件"退回"到起始位置

flush()清除内部I/O缓存,并将数据强行写会磁盘

close()方法关闭一个之前打开的文件

3. 正则表达式

(1) 常用特殊符号

. 任意单个字符

^ 匹配字符串开头

$ 匹配字符串结尾

* 前一个字符0次或无限次扩展 abc* 可以是ab/abc/abcc/abccc

+ 前一个字符1次或无限次扩展 abc+ 可以是abc/abcc/abccc

? 前一个字符0次或1次扩展 abc? 可以是ab/abc

| 左右表达式任意一个 abc|def 表示abc或def

{m} 扩展前一个字符m次 ab{2}c表示 abbc

{m,n} 扩展前一个字符m至n次(含n)ab{1,2}c表示 abc/abbc

[ ] 对单个字符给出取值范围

[abc] 表示a,b,c中的一个 [a-z]表示a到z单个字符

[^] 对单个字符给出排除范围 [^abc ] 非a或b或c的单个字符

() 分组标记,内部只能用|

\d 数字,等价于[0-9]

\w 单词字符,等价于[A-Za-z0-9_]

e.g.

^[A-Za-z]+$ 26个字母组成的字符串

[A-Za-z0-9]+$ 26个字母和数字组成的字符串

[\u4e00-\u9fa5] 中文字符

^[\u4E00-\u9FA5]{2,4} 2-4个汉字

(2) re模块

match():从字符串开始位置对模式进行匹配。匹配成功,返回一个Match对象;匹配失败,返回None。

search():从字符串任意位置的地方,对模式进行匹配。匹配成功,返回一个Match对象;匹配失败,返回None。

findall():返回全部匹配对象的列表

split():根据正则表达式的分隔符吧字符串分割为一个列表,并返回

匹配对象主要有以下两个方法:

  • group():返回全部匹配对象,或特定subgroup,如group(0)
  • groups():返回一个包含全部匹配的subgroup的元组(如果没有成功匹配,返回一个空元组)

函数式用法:一次性操作

import re
rst = re.search(r'[1-9]\d{5}','TEST 1000191')

面向对象用法:编译多次操作

pat = re.compile(r'[1-9]\d{5}')
 rst = pat.search('TEST 1000191')
相关文章
|
2月前
|
存储 Python
Python文件操作(1)
【10月更文挑战第17天】
Python文件操作(1)
|
2月前
|
数据采集 存储 Python
Python文件操作2
【10月更文挑战第18天】
Python文件操作2
|
1月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
53 5
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
29 1
|
2月前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
27 2
|
2月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
2月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
33 1
|
2月前
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
32 4
|
2月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
20 3