列表
获取指定对象出现的次数:count() e g: listname.count(obj)
获取指定元素首次出现的下标: index()
修改列表元素:指定列表名和要修改的元素的索引 再指定该元素的新值
eg: sum[0]='ABC' 即把sum列表的第一个数改为'ABC'
在列表中添加元素:
-
在列表末尾添加元素 e g: sum.append('ABC')
-
在列表中插入元素 (任何位置) 需要指定新元素的索引和值
e g: sum.insert(0,'ABC')
从列表中删除元素: del sum[0]
排序: sort() 永久排序 sorted() 临时排序 reverse() 反转排序
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars) 输出:['audi', 'bmw', 'subaru', 'toyota']
list=[1,6,5,34,8,52]
list.sort()
print(list)
列表切片: e g:[2:4] 第三个到第四个
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) 输出:['charles', 'martina', 'michael']
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4]) 输出:['martina', 'michael', 'florence']
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4]) 输出:['charles', 'martina', 'michael', 'florence']
复制列表:即同时省略起始索引和终止索引([:])
e g: my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
元组
注:使用圆括号、数据不可修改
遍历元组 e g: dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
虽然不能修改元组的元素,但可以给存储元组的变量赋值
字典
zip() 函数:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
字典用放在花括号 {} 中的一系列键—值对表示 e g: alien_0 = {'color': 'green', 'points': 5}
访问字典中的值 : 依次指定字典名和放在方括号内的键 print(alien_0['color'])
添加键—值对 : 可依次指定字典名、用 方括号括起的键和相关联的值
alien_0['y_position'] = 25
文件
参数 | 方式 | 文件 |
---|---|---|
r | 只读模式 | 需存在 |
rb | 二进制格式(打开)、只读模式 | 需存在 |
R+ | 可读可写入模式,覆盖当前文本内容 | 需存在 |
rb+ | 二进制格式(打开)、读写模式 | 需存中 |
w | 只读模式 | 存在则覆盖,不存在新建 |
wb | 二进制格式(打开)、只读模式 | 存在则覆盖,不存在新建 |
w | 先清空文件,然后可读写 | 存在则覆盖,不存在新建 |
wb+ | 二进制格式(打开)、读写模式 | 存在则覆盖,不存在新建 |
a | 追加模式打开文件,在文件末尾可写入 | |
ab | 二进制格式(打开)、后同上 | |
a+ | 以读写模式打开、末尾追加(与a进制不同) | |
ab+ | 二进制格式(打开)、后同上 |
python读取文件
方法 | 说明 |
---|---|
file.read([number]) | 这种方式用于读取文本的指定字符串长度 |
file.readline() | 这种方式读取文本的第一行内容 |
flie.readlines() | 这种方式读取了文本的所有内容,并把每一行内容放到一个list中 |
file.flush() | 刷新缓冲区,立即写到磁盘上 |
file.seek(index) | 移动文件到指定的索引处,从此位置开始读取,但写入从最后开始 |
with open | 使用完自动关闭,省去file.close()操作 |
encoding='utf-8' | 读写的文件含中文时添加 |
-
"r" - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
-
"a" - 追加 - 打开供追加的文件,如果不存在则创建该文件。
-
"w" - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。
-
"x" - 创建 - 创建指定的文件,如果文件存在则返回错误。
-
"a" - 追加 - 会追加到文件的末尾
-
"w" - 写入 - 会覆盖任何已有的内容
指定文件是应该作为二进制还是文本模式进行处理
-
"t" - 文本 - 默认值。文本模式。
-
"b" - 二进制 - 二进制模式(例如图像
e g: open() 函数返回文件对象,此对象有一个 read() 方法用于读取文件的内容
f = open("demofile.txt", "r")
print(f.read())
注:demofile.txt有该文件,位于与 Python 相同的文件夹中
e g: 返回文件中的前五个字符:
f = open("demofile.txt", "r")
print(f.read(5))
seek() 将文件的指针移动到新的位置 例可以从文件的第19个字符读取13个字符
注:一个汉字按两个字符 英文和数字占一个字符
with open('message.txt,'r')as file
file.seek(19)
string=file.read(13)
print(string)
readline() : 方法返回一行
f = open("demofile.txt", "r")
print(f.readline())
close() 函数 :是专门用来关闭已打开文件的
写入已有文件: 实例
打开文件 "demofile2.txt" 并将内容追加到文件中:
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()
# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
删除文件:
删除文件,必须导入 OS 模块,并运行其 os.remove() 函数
实例:
删除文件 "demofile.txt":
import os
os.remove("demofile.txt")
删除整个文件夹,请使用 os.rmdir()
import os
os.rmdir("myfolder")
方法 | 描述 |
---|---|
close() | 关闭文件。 |
detach() | 从缓冲区返回分离的原始流(raw stream)。 |
fileno() | 从操作系统的角度返回表示流的数字。 |
flush() | 刷新内部缓冲区。 |
isatty() | 返回文件流是否是交互式的。 |
read() | 返回文件内容。 |
readable() | 返回是否能够读取文件流。 |
readline() | 返回文件中的一行。 |
readlines() | 返回文件中的行列表。 |
seek() | 更改文件位置。 |
seekable() | 返回文件是否允许我们更改文件位置。 |
tell() | 返回当前的文件位置。 |
truncate() | 把文件调整为指定的大小。 |
writeable() | 返回是否能够写入文件。 |
write() | 把指定的字符串写入文件。 |
writelines() | 把字符串列表写入文件。 |
在调用open函数添加 encoding='utf-8' 参数实现将编码指定为utf-8
注:即可以添加文字的文本 不成乱码
目录操作
在os模块中存在创建目录的函数os.mkdir()
语法格式为:
os.mkdir(path) (名字为path)
判断目录是否存在的函数:
os.path.exists(path)
eg:
import os
if os.path.exists("text.txt"):
print("该目录存在")
else:
print("该目录不存在")
创建多级目录:os.makedirs()
os.makedirs(path)
eg:
import os
now=os.getcwd() 注:getcwd() 为返回当前进程的工作目录
os.makedirs("one\kiki\zizi")
print("创建成功")
删除目录: 使用os模块中的os.rmdir()函数
import os
if not os.path.exists( '一级目录' ):
os.mkdir( '一级目录' )
重命名: os.rename(str,dst) 注:str为更改的文件或目录,dst为新的名字
eg:
import os
os.rename(r"D:\vstest\一级目录Kiki",r"D:\vstest\一级目录ljx")
删除文件 : os.remove()
注:在删除文件的时候最好使用绝对路径
import os
os.remove(r"D:\vstest\一级目录ljx111")
面向对象程序设计
面向对象编程有三大特点: 封装 继承 多态
引用类 例:
class Turtle:
def climb(self):
print("刮风这天我试过握住你手")
输:
1.类 的定义: class关键字
class Name:
'''类文档'''
content
注:name为创建类的名字 尽量首字母都大写 content为类中的类体 包含变量 属性 方法等
eg 来定义一个类:
class School:
pass
school =school()
print(type(school))
注:通过输出看一下类型 <class 'main.school'>
2. -init-()方法 (使用该方法必须包含一个self参数) 调用时,不用传递该参数
构造方法: 在创建类的时候,往往创建一个—init—()的方法
比如:处理学生的成绩表
class student(object):`
def_init_(self,name,score):`
self.name=name
self.score=score
def print_score(self):
print("%s: %s"%(self.name,self.score))
调用: bart.print_score() →Bart Simpson: 59
例题:
class Student(object):
def _init_(self,name,score):
self.name=name
self.score=score
def get_grade(self):
if self.score>=90:
return 'A'
elif self.score>=60:
return 'B'
else:
return 'C'
输入:
lisa = Student('Lisa', 99)
bart = Student('Bart', 59)
print(lisa.name, lisa.get_grade())
print(bart.name, bart.get_grade())
输出: Lisa A
Bart C
在Python中,实例的变量名如果以__
开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name, self.__score))
>>> bart = Student('Bart Simpson', 59)
>>> bart.__name
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute '__name'
判断对象类型使用type( )函数:
判断class的类型 使用 isinstance()函数:
例:
isinstance(h, Husky)
True
没有问题,因为h
变量指向的就是Husky对象。
获得一个对象的所有属性和方法 使用dir()函数
模块
模块是一组python代码的集合,可以使用其他模块,也可以被其他模块使用
注: 创建自己的模块时,模块名不要使用中文、特殊字符:
不要和系统的模块名起冲突
正则表达式
进行文本匹配的工具
e g:某个字符串匹配某个正则表达式,通常指这个字符串里有一部分或几部分能够满足表达式给出的条件
\b :正则表达式元字符 可以代表单词的开始或结尾 只是匹配一个位置
\n : ASCII编码为10的字符 换行符
. :是匹配除了换行符以外的任意字符
*:代表的不是字符 也不是位置而是数量 说明前面的内容可以连续重复使用任意次
.* :任意个数量不包含换行的字符
\d: 匹配一位数字
-: 不是元字符 匹配他本身
\bnihao\b.*\blianjunxian\b
析:一个 nihao 然后任意个字符,不能换行 最后的单词是lianjunxian
0\d\d-\d\d\d\d\d\d\d\d
解析:0开头 后跟两位数字,然后—,后跟8位数字
法二:
0\d{2}-\d{8}
\s :匹配任意的空白符,包括空格、制表符(tab) ,换行符,中文全角空格
\w: 匹配字母或下划线或数字或汉字等
*: 匹配前面的字符零次或多次
+: 匹配前面的字符一次或多次
^: 表示匹配字符串的开始
**$: ** 表示匹配字符串的结束
\ba\w*\b
解:a开头 且中间有任意量的数字或字母 然后单词结束 即a开头的
\d+ 匹配一个或多个连续的数字
\b\w(6)\b 匹配6个字符
代码 | 意义 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配任意数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
字符转义: 当无法指定一些元字符时,\ 就用上了
c:\\windows
就是
c:\windows
代码 | 说明 |
---|---|
* | 0或多 |
+ | 1或多 |
? | 0或1 |
{n} | 重复n次 |
{n,} | >=n |
{n,m} | n到m次 |
lianjunxian\d+
解析:lianjunxian后加一个或多个数字
^\w+
解析: 开头至少是一个字母数字或下划线或汉字
字符类
[ ] :匹配其中任意一个
{ }: 重复次数 例:[1-9]{1,3} 在1-9内选取1位或2位或3位数字
-
[0-9]代表的含意与\d意思一样
-
[a-z0-9A-Z_]也完全等同于\w
-
()也是元字符,需要转义字符来进行
\a | 报警字符(打印它的效果是电脑嘀一声) |
---|---|
\b | 通常是单词分界位置,但如果在字符类里使用代表退格 |
\t | 制表符,Tab |
\r | 回车 |
\v | 竖向制表符 |
\f | 换页符 |
\n | 换行符 |
\e | Escape |
\0nn | ASCII代码中八进制代码为nn的字符 |
\xnn | ASCII代码中十六进制代码为nn的字符 |
\unnnn | Unicode代码中十六进制代码为nnnn的字符 |
\cN | ASCII控制字符。比如\cC代表Ctrl+C |
\A | 字符串开头(类似^,但不受处理多行选项的影响) |
\Z | 字符串结尾或行尾(不受处理多行选项的影响) |
\z | 字符串结尾(类似$,但不受处理多行选项的影响) |
\G | 当前搜索的开头 |
\p{name} | Unicode中命名为name的字符类,例如\p{IsGreek} |
(?>exp) | 贪婪子表达式 |
(?-exp) | 平衡组 |
(?im-nsx:exp) | 在子表达式exp中改变处理选项 |
(?im-nsx) | 为表达式后面的部分改变处理选项 |
(?(exp)yes|no) | 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no |
(?(exp)yes) | 同上,只是使用空表达式作为no |
(?(name)yes|no) | 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no |
(?(name)yes) | 同上,只是使用空表达式作为no |
python 细节
While True,让它能循环运行
python strip():返回移除字符串头尾指定的字符生成的新字符串
str2 = " Runoob "; # 去除首尾空格
print str2.strip();
Python split( ) :通过指定分隔符对字符串进行切片
eg: txt = "apple#banana#cherry#orange"
x = txt.split("#")
print(x)
answer: ['apple', 'banana', 'cherry', 'orange']
str -- 分隔符:默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
while True:意思是要一直进行loop(死循环)。
通常while true 循环中会加入break条件判断用以在
循环内部的某个条件达成时终止循环。
try except :首先执行 try 中的代码块,如果执行过程中出现异常,把该异常
对象交给该 except 块处理
map() 函数: iterable 中的每个项目执行指定的函数。
项目作为参数发送到函数。
ord函数取字母的ASCII值,chr()是ord()的反方法
end : “end=' '”意思是末尾不换行,加空格。 end默认值是换行符\n
format() 方法格式化指定的值,并将其插入字符串的占位符内。
{:.2f} 表示打印输出小数点保留两位小数; eg:print('c={:.2f}'.format(c))
sum[::-1]: 让sum列表倒序输出。
range()函数:数的第一个值,是包含这个值,计数的最后一位,不包含这个值
range(start, stop[, step])
eg:list``(``range``(``0``, ``10``, ``3``))范围``0``-``9``,步长为``3
打印数字1~5,需要使用range(1,6): for value in range(1,6):
print(value)
函数可变参数:参数前加*,这种方式的可变参数在传递的时候是以元组的形式传递
title() 所有单词的首个字母转化为大写,其余字母均为小写 istitle()
append:给元组或列表增加数据,eg: a.append(i)
isalpha() 方法检测字符串是否只由字母组成
isdigit() 方法检测字符串是否只由数字组成 e g: str.isdigit()
eval() 函数 用来执行一个字符串表达式,并返回表达式的值
函数open():接受一个参数: 要打开的文件的名称
检索字符串一定要在数据上加上引号
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv9210