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')
相关文章
|
1月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
197 1
|
4月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
229 72
|
2月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
7月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
202 0
|
4月前
|
移动开发 安全 Linux
Python文件操作的"保险箱":with语句深度实战指南
本文深入解析Python中`with`语句的原理与高级应用,通过“保险箱”类比,形象展示资源管理机制。从上下文管理协议到实战场景,涵盖文件、数据库、网络等多种资源的高效安全处理方式,助你写出更优雅、可靠的代码。
144 1
|
5月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
223 1
|
5月前
|
缓存 数据库连接 数据库
Python文件操作的“保险箱”:with语句深度实战指南
本文深入探讨Python中with语句在文件操作中的应用及其优势。首先介绍其底层原理,基于上下文管理协议自动管理资源的获取与释放,避免手动关闭文件导致的资源泄漏问题。接着通过基础文件读写、异常处理进阶和复合资源管理等实战场景解析with语句的便捷性与安全性。同时,阐述如何自定义上下文管理器以满足特定需求,并分析其性能考量及优化策略。最后总结实战经验,强调优先使用内置管理器、明确异常处理以及保持代码可读性的重要性,助力开发者高效编写健壮的程序。
146 1
|
5月前
|
自然语言处理 安全 JavaScript
Python文件操作的“保险箱”:with语句深度实战指南
Python中的`with`语句是文件操作和资源管理的强大工具,如同一个智能保险箱,自动处理打开和关闭操作,避免手动管理可能引发的错误。它通过上下文管理协议(`__enter__`和`__exit__`方法)确保资源在使用后正确释放。无论是逐块读取大文件、同时读写文件,还是处理特殊编码文件,`with`语句都能简化代码并提高安全性。此外,自定义上下文管理器可扩展到数据库连接等场景,而常见错误如重复关闭文件或忽略异常也需注意。结合生成器表达式批量处理文件时,`with`语句仍能保持高效和安全。总之,`with`语句是资源管理的瑞士军刀,让复杂操作变得简单可靠。
142 1
|
5月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
|
7月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
189 11