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 ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...

表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...

职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...