当前位置: 首页 > news >正文

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 面向对象编程——类定义与对象

<类定义与对象声明> 面向对象最重要的概念就是类&#xff08;Class&#xff09;和实例&#xff08;Instance&#xff09;&#xff0c;必须牢记类是抽象的模板&#xff0c;比如Student类&#xff0c;而实例是根据类创建出来的一个个具体的“对象”&#xff0c;每个对象都拥…...

基于 Apache Flink 的实时计算数据流业务引擎在京东零售的实践和落地

摘要&#xff1a;本文整理自京东零售-技术研发与数据中心张颖&闫莉刚在 ApacheCon Asia 2022 的分享。内容主要包括五个方面&#xff1a; 京东零售实时计算的现状实时计算框架场景优化&#xff1a;TopN场景优化&#xff1a;动线分析场景优化&#xff1a;FLINK 一站式机器学…...

【JavaEE】如何将JavaWeb项目部署到Linux云服务器?

写在前面 大家好&#xff0c;我是黄小黄。不久前&#xff0c;我们基于 servlet 和 jdbc 完善了博客系统。本文将以该系统为例&#xff0c;演示如何将博客系统部署到 Linux 云服务器。 博客系统传送门&#xff1a; 【JavaEE】前后端分离实现博客系统&#xff08;页面构建&#…...

Mysql常用命令

mysql连接&#xff1a; [roothost]# mysql -u root -p Enter password:******创建数据库&#xff1a; CREATE DATABASE 数据库名&#xff1b; 删除数据库&#xff1a; drop database 数据库名; 使用mysqladmin删除数据库&#xff1a; [roothost]# mysqladmin -u root -p dr…...

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(4)

目录 写在前面&#xff1a; 题目&#xff1a;P1149 [NOIP2008 提高组] 火柴棒等式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; …...

在Win10以及SDK为33的环境下——小米便签项目的搭建

文章目录0. 我的操作系统和开发环境1. 相关文件下载&#xff1a;2. import project&#xff1a;2.1 用import project导入项目3. make project&#xff1a;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、福利&#xff1a;工程代码的获取1、前言 PCIE是目前速率很高的外部板卡与CPU通信的方案之一&#xff0c;广泛应用于电脑主板与外部板卡的通讯&#xff0c;PCIE协议极其复杂&…...

Linux网络配置

文章目录一、Linux网络配置原理图二、查看网络IP和网关ping测试主机之间网络连通性三、linux网络环境配置第一种方法(自动获取)第二种方法(指定ip)四、设置主机名和hosts映射设置主机名设置hosts映射五、主机名解析过程分析(Hosts、DNS)Hosts是什么DNS一、Linux网络配置原理图 …...

【Java学习笔记】多线程与线程池

多线程与线程池一、多线程安全与应用1、程序、进程与线程的关系2、创建多线程的三种方式&#xff08;1&#xff09;继承Thread类创建线程【不推荐】&#xff08;2&#xff09;实现Runnable接口创建线程&#xff08;3&#xff09;Callable接口创建线程3、线程的生命周期4、初识线…...

尺取法

尺取法是一种线性的高效率算法。记 (L, R ) 为一个序列内以L为起点的最短合法区间, 如果R随L的增大而增大的,就可以使用尺取法。具体的做法是不断的枚举 L,同时求出R。 因为 R 随 L增大而增大,所以总时间复杂度为 O(n) 指针i、j的两种方向: 反向扫描:i、j方向相反,i从头…...

20.有效的括号

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中&#xff0c;其实有很多站点&#xff0c;比如企业门户网站&#xff0c;产品手册&#xff0c;知识帮助手册等&#xff0c;因此会需要多个站点&#xff0c;甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...

职坐标物联网全栈开发全流程解析

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