Python快速入门:类、文件操作、正则表达式
类、文件操作、正则表达式
- 1. 类
- 2. 文件操作
- 3. 正则表达式
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 = idself.name = nmself.phone = phprint('Create instance for:', self.name)def updatePhone(self,newph):self.phone = newphprint('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 = emdef updateEmail(self,newem):self.email = newemprint('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')
相关文章:
Python快速入门:类、文件操作、正则表达式
类、文件操作、正则表达式1. 类2. 文件操作3. 正则表达式1. 类 类是用来描述具有相同的属性和方法的集合,定义了该集合中每个对象共有的属性和方法,对象是类的实例,可以调用类的方法。 定义类时,如有父类,则写在类名…...
java-day01
程序就是有序指令的集合 cmd执行java程序,javac Test.java,java Test java技术平台: javaSE标准版,javaEE企业版,javaME小型版 java语言面向对象的(oop),java跨平台性的(…...
玩转 Node.js 集群
一、介绍 Node 在 v0.8 时直接引入了 cluster 模块,用以解决多核 CPU 的利用率问题,同时也提供了较完善的 API,用以处理进程的健壮性问题。 cluster 模块调用 fork 方法来创建子进程,该方法与 child_process 中的 fork 是同一个…...
Day909.MySQL 不同的自增 id 达到上限以后的行为 -MySQL实战
MySQL 不同的自增 id 达到上限以后的行为 Hi,我是阿昌,今天学习记录的是关于MySQL 不同的自增 id 达到上限以后的行为的内容。 MySQL 里有很多自增的 id,每个自增 id 都是定义了初始值,然后不停地往上加步长。 虽然自然数是没有…...
JVM学习.01 内存模型
1、前言对于C、C程序员来说,在内存管理领域,他们拥有对象的“所有权”。从对象建立到内存分配,不仅需要照顾到对象的生,还得照顾到对象的消亡。背负着每个对象生命开始到结束的维护和管理责任。对于JAVA程序来说,因为J…...
R+VIC模型应用及未来气候变化模型预测
RVIC模型融合实践技术应用及未来气候变化模型预测在气候变化问题日益严重的今天,水文模型在防洪规划,未来预测等方面发挥着不可替代的重要作用。目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然&…...
搞懂vue 的 render 函数, 并使用
render函数是什么 简单的说,在vue中我们使用模板HTML语法组建页面的,使用render函数我们可以用js语言来构建DOM 因为vue是虚拟DOM,所以在拿到template模板时也要转译成VNode(虚拟节点)的函数,而用render函数构建DOM,vu…...
【Linux】GDB的安装与使用
安装安装gdb的具体步骤如下:1、查看当前gdb安装情况rpm -qa | grep gdb如果有,则可以先删除:rpm -e --nodeps 文件名如果没有,则进行下一步。2、下载gdb源码包或者直接apt安装。apt命令安装:sudo apt install gdb源码包…...
MySQL索引特性
文章目录为什么要有索引?认识磁盘磁盘的结构磁盘的盘片结构定位扇区磁盘随机访问 (Random Access)与连续访问 (Sequential Access)MySQL与磁盘交互索引的理解测试主键索引索引的原理索引结构是否可以使用其他数据结构B树 vs B树聚簇索引 vs 非聚簇索引为什么要有索引…...
Python 面向对象编程——类定义与对象
<类定义与对象声明> 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥…...
基于 Apache Flink 的实时计算数据流业务引擎在京东零售的实践和落地
摘要:本文整理自京东零售-技术研发与数据中心张颖&闫莉刚在 ApacheCon Asia 2022 的分享。内容主要包括五个方面: 京东零售实时计算的现状实时计算框架场景优化:TopN场景优化:动线分析场景优化:FLINK 一站式机器学…...
【JavaEE】如何将JavaWeb项目部署到Linux云服务器?
写在前面 大家好,我是黄小黄。不久前,我们基于 servlet 和 jdbc 完善了博客系统。本文将以该系统为例,演示如何将博客系统部署到 Linux 云服务器。 博客系统传送门: 【JavaEE】前后端分离实现博客系统(页面构建&#…...
Mysql常用命令
mysql连接: [roothost]# mysql -u root -p Enter password:******创建数据库: CREATE DATABASE 数据库名; 删除数据库: drop database 数据库名; 使用mysqladmin删除数据库: [roothost]# mysqladmin -u root -p dr…...
【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(4)
目录 写在前面: 题目:P1149 [NOIP2008 提高组] 火柴棒等式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述: 输入格式: 输出格式: 输入样例: 输出样例: 解题思路: …...
在Win10以及SDK为33的环境下——小米便签项目的搭建
文章目录0. 我的操作系统和开发环境1. 相关文件下载:2. import project:2.1 用import project导入项目3. make project:3.1 AS中的命令行乱码问题:3.2 依赖库缺失问题:3.3 关于targetSdkVersion3.4 关于Missing URL3.5 关于Manifest merger f…...
FPGA纯verilog实现RIFFA的PCIE通信,提供工程源码和软件驱动
目录1、前言2、RIFFA简介RIFFA概述RIFFA架构RIFFA驱动3、vivado工程详解4、上板调试验证并演示5、福利:工程代码的获取1、前言 PCIE是目前速率很高的外部板卡与CPU通信的方案之一,广泛应用于电脑主板与外部板卡的通讯,PCIE协议极其复杂&…...
Linux网络配置
文章目录一、Linux网络配置原理图二、查看网络IP和网关ping测试主机之间网络连通性三、linux网络环境配置第一种方法(自动获取)第二种方法(指定ip)四、设置主机名和hosts映射设置主机名设置hosts映射五、主机名解析过程分析(Hosts、DNS)Hosts是什么DNS一、Linux网络配置原理图 …...
【Java学习笔记】多线程与线程池
多线程与线程池一、多线程安全与应用1、程序、进程与线程的关系2、创建多线程的三种方式(1)继承Thread类创建线程【不推荐】(2)实现Runnable接口创建线程(3)Callable接口创建线程3、线程的生命周期4、初识线…...
尺取法
尺取法是一种线性的高效率算法。记 (L, R ) 为一个序列内以L为起点的最短合法区间, 如果R随L的增大而增大的,就可以使用尺取法。具体的做法是不断的枚举 L,同时求出R。 因为 R 随 L增大而增大,所以总时间复杂度为 O(n) 指针i、j的两种方向: 反向扫描:i、j方向相反,i从头…...
20.有效的括号
给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括…...
vscode如何添加ollama本地模型-实现token自由
vscode一直支持的都是云端闭源的模型,例如 GPT Claude等等,当这些闭源模型的免费额度用完之后,则需要付费继续使用。本文介绍的是vscode接入ollama的本地模型,从而实现token自由。 ollama 首先需要到ollama的官网下载ollama应用…...
从稀疏点云到动态环境:八叉树地图在视觉SLAM中的核心构建与应用
1. 八叉树地图:视觉SLAM的"三维记事本" 想象一下你第一次走进一个陌生商场时的场景:眼睛快速扫描扶梯位置,大脑自动标记洗手间标识,同时避开行走的人群——这个过程本质上就是人类版的SLAM(同步定位与地图构…...
DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测
DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测 1. 引言:当AI成为你的研究伙伴 想象一下,你正在为一个复杂的市场分析项目焦头烂额,需要快速整理一份包含最新数据、行业趋势和竞争格局的深度报告。传统方式下&#x…...
DataQA数问增长:金融小贷行业的“智能风控大脑“实战揭秘
数问"Web渠道转化率仅0.2,欺诈风险高、客户资质差——你的渠道投放预算,有多少正在打水漂?" 💡 真实场景还原:某头部消费金融公司的渠道危机 时间:2026年3月,周一上午9:00 角色&…...
如何一键下载国内主流视频平台的在线视频:Video-Downloader完全指南
如何一键下载国内主流视频平台的在线视频:Video-Downloader完全指南 【免费下载链接】Video-Downloader 下载youku,letv,sohu,tudou,bilibili,acfun,iqiyi等网站分段视频文件,提供mac&win独立App。 项目地址: https://gitcode.com/gh_mirrors/vi/V…...
Omni-Vision Sanctuary在嵌入式边缘设备上的轻量化部署思考
Omni-Vision Sanctuary在嵌入式边缘设备上的轻量化部署思考 1. 嵌入式视觉的挑战与机遇 在智能摄像头、工业质检设备、无人机等嵌入式场景中,视觉模型的部署一直面临特殊挑战。传统方案要么性能不足,要么功耗过高,难以平衡实时性与能效比。…...
每日算法题 21---54.螺旋矩阵
题目54.螺旋矩阵要求给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例思路核心思路是用边界圈定遍历范围,按照固定方向循环遍历,每遍历完一条边就收缩对应边界,直到边界交叉终止&…...
如何评估 SEO 优化的成本效益_SEO优化应该重点关注哪些方面
如何评估 SEO 优化的成本效益 在当今互联网时代,搜索引擎优化(SEO)已经成为了提升网站流量和品牌知名度的关键手段。SEO 优化的成本效益评估并不是一件简单的事情。如何在有限的预算内实现最大的效益,是每一个企业和网站运营者都需…...
基于AI政策路径与通胀预期模型的美联储决策分析:鲍威尔观望信号引发加息预期归零
摘要:本文通过构建AI政策路径预测模型,结合通胀预期识别系统、能源价格传导算法与劳动力市场评估框架,对美联储在当前环境下的利率决策逻辑进行分析,重点解析“观望策略”背后的模型依据及市场加息预期快速回落的原因。一、AI政策…...
别再只盯着EMD了!滚动轴承故障诊断,试试VMD和MCKD这些新方法(附Python代码对比)
滚动轴承故障诊断:VMD与MCKD的实战对比与Python实现 滚动轴承作为旋转机械的核心部件,其健康状态直接影响设备运行安全。传统经验模态分解(EMD)虽广泛应用,但在处理强噪声和非平稳信号时存在明显局限。本文将深入解析变…...
