python 4+mini项目学习笔记

‘Hello’, end = ‘’(在字符串的末尾令下一行接着本行字符串的末尾)

‘Hello’, sep=’ ,’(用逗号替换掉默认的空格分隔符)

Random.randint(a,b)从a到b的随机数

Try except用来处理错误

4.列表:

a = a +[b]

列表加列表需要中括号

Len取得列表长度

del spam [ ]从列表删除值(下标)

for 变量 in 列表:

in和not in可以确定值是否在列表中

spam.index (‘字符’)查找字符在列表中的值

spam.append(‘’)插入末尾

spam.insert(数字,‘ ’)插入数字所在的位置

spam.remove(‘ ’)从列表删除值(值)

spam.sort()将列表的值排序(asc2码排序)

spam.sort(reserve=True)将列表的值倒序排序(asc2码排序)

spam.sort(key=str.lower)将列表的值排序(普通字典排序)这将导致 sort()方法将列表中所有的表项当成小写,但实际上并不会改变它们在列表中的值。

可以在行末使用续行字符\,将一条指令写成多行

Eg: print('Four score and seven ' + \

'years ago...')

Four score and seven years ago...

元组与列表唯二不一样:

1.元组用圆括号,列表用方括号

2.元组像字符串一样,数值是不可改变

>>> type(('hello',)) 括号后加逗号表明这是一个元组(仅有一个值时)

<class 'tuple'>

>>> type(('hello'))

<class 'str'>

Turple([‘ ’,’ ’,’ ’])元组换列表

List((‘ ’,’ ’,’ ’))列表换元组

Copy.copy()Copy相当于给物品贴标签

Copy.deepcopy()deepcopy才是一次真正的复制

如果要复制的列表中包含了列表,那就使用 copy.deepcopy()函数来代替。deepcopy()函数将同时复制它们内部的列表

Deepcopy完全独立,但是copy还是会随原来数组变化。

     第五章

字典没有顺序,但是列表有顺序

列表名字.keys()键

列表名字.values()值

列表名字.items()键值对

For a in spam.keys():

Print(a)

输出键

>>> spam = {'color': 'red', 'age': 42} >>> for k, v in spam.items():         

print('Key: ' + k + ' Value: ' + str(v))

也可以利用多重赋值的技巧,在 for 循环中将键和值赋给不同的变量。

Key: age Value: 42

Key: color Value: red

Get()的用法:

Str(字典名字.get(‘key值’,(如果字典中没有此数据的备用值))),例如:

str(picnicItems(列表).get('cups(键)', 0)) + ' cups.'

setdefault第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。

列表名字.stedefault(‘参数1’,’参数2’)

Setdefault用于用key查找value或者加入新的字典键值对

Setdefault常用操作:

for character(元素) in message(列表):

count.setdefault(character, 0)

count[character] = count[character] + 1

print(count)

get和setdefault的区别:setdefault可以设置新的key和value但是get不能(只可以赋值为0)

6.字符串操作

几种方法来输入带有引号的字符串:

  1. 双引号:"That is Alice's cat."
  2. 转义字符:'Say hi to Bob\'s mother.' 

\'     ——》   单引号

\"     ——》  双引号

\t     ——》   制表符

\n     ——》   换行符

\\      ——》   倒斜杠

  1. 原始字符串

可以在字符串开始的引号之前加上 r,使它成为原始字符串:

print(r'That is Carol\'s cat.')

That is Carol\'s cat.

  1. 三重引号的多行字符串:

多行字符串的起止是 3 个单引号或 3 个双引号。“三重引号”之间的

所有引号、制表符或换行,都被认为是字符串的一部分。

三重引号还可以用于多行注释

字符串名.upper()小写换大写

字符串名.lower()大写换小写

字符串名.isupper()检验是否大写

字符串名.islower()检验是否小写

isalpha()返回 True,如果字符串只包含字母,并且非空;

isalnum()返回 True,如果字符串只包含字母和数字,并且非空;  

isdecimal()返回 True,如果字符串只包含数字字符,并且非空;

isspace()返回 True,如果字符串只包含空格、制表符和换行,并且非空;

istitle()返回 True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词

 istitle特例:'This Is Title Case 123'.istitle()

True

startswith()endswith()只需要检查字符串的开始或结束部分是否等于另一个字符串

字符串方法 join()和 split()

xxyy.join把列表中的字符串用xxyy连接起来

例子:', '.join(['cats', 'rats', 'bats'])

'cats, rats, bats'

.spilt(xxyy)把一个字符串以xxyy断开分割成几个字符串

用 rjust()、ljust()和 center()方法对齐文本

字符串.rjust(x,‘y’):左边空(x-字符串个数)个y

字符串.ljust(x,‘y’):右边空(x-字符串个数)个y

y可以有可以无,若没有y则填充空格

字符串.center(x,‘y’):左边右边各空(x-字符串个数) /2个y

同理,y可有可无

用 strip()、rstrip()和 lstrip()删除空白字符

strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符。

lstrip()rstrip()方法将相应删除左边或右边的空白字符。

字符串.strip(abcd)中,abcd的顺序不重要,但大小写顺序一定要统一

用 pyperclip 模块拷贝粘贴字符串

pyperclip.copy('Hello world!')

>>> pyperclip.paste()

'Hello world!'

如果你的程序之外的某个程序改变了剪贴板的内容,paste()函数就会返

回它。

第七章。模式匹配与正则表达式

正则表达式,例如:\d\d\d-\d\d\d-\d\d\d\d可以表示成\d{3}-\d{3}-\d{4}

\d代表一个数字

导入正则表达式:import re

Re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')用于传入字符串值,表示正则表达式,表示为Regax对象

.search(‘文本’)查找传入的字符串,search会返回Match对象,如要调用可以用.group()函数

注意:要向re.compile传递原始字符串,\(和\)表示()

利用括号分组:例如(\d{3})-(\d{3}-\d{4}),则.group(1)对应第一个括号,.group(2)对应第二个括号

获取所有分组用.groups()的方法

多重赋值技巧:

A,b = 文件名.groups()

字符|称为“管道”。希望匹配许多表达式中的一个时,就可以使用它。例如,

正则表达式 r'Batman|Tina Fey'将匹配'Batman''Tina Fey'。 第一次出现的文本将会被首先返回

用问号实现可选匹配()?如果有就打印括号里的值,没有也会正常输出

用星号匹配零次或多次(a)*如果Match值中出现多次a可以全部匹配

用+号匹配一次或多次,与星号同理

用花括号匹配特定次数(){次数},(a){3,5}将匹配(aaa)(a{4})(a{5})

  1. {3,5}为贪心匹配最长,而(a){3,5}?为非贪心匹配自动匹配最短

作为 findall()方法的返回结果的总结,请记住下面两点:

1.如果调用在一个没有分组的正则表达式上,例如\d\d\d-\d\d\d-\d\d\d\d,方法

findall()将返回一个匹配字符串的列表,例如['415-555-9999', '212-555-0000']

2.如果调用在一个有分组的正则表达式上,例如(\d\d\d)-(\d\d\d)-(\d\d\d\d),方

findall()将返回一个字符串的元组的列表(每个分组对应一个字符串),例如[('415',

'555', '1122'), ('212', '555', '0000')]

字符分类:缩写字符分类 表示

\d                          0 9 的任何数字

\D                          0 9 的数字以外的任何字符

\w                           任何字母、数字或下划线字符(可以认为是匹配“单词”字符)

\W                          除字母、数字和下划线以外的任何字符

\s                         空格、制表符或换行符(可以认为是匹配“空白”字符)

\S                         除空格、制表符和换行符以外的任何字符

字符后加上+号可以匹配多个字符

(r[xxyyzz])用方括号定义自己的字符分类。例如,字符分类[aeiouAEIOU]将匹配所有元音字符,不论大小写,可以用短横表示范围[a-zA-Z0-9]表示所有字母大小写和数字

在左方括号后加上^字符,可以得到不在方括号内的所有字符

(r‘^xxyy)表示匹配以xxyy开始的字符串

(rxxyy$)表示匹配以xxyy结尾的字符串

在正则表达式中,.(句点)字符称为“通配符”。re.compile(r'.at') 句点只能匹配一个st前的除换行符以外的字符

用点-星匹配所有字符

Re.compile(rFirst Name: (.*) Last Name: (.*))匹配文本中Name后的所有字符,若想用非贪心算法,则在星号后加问号

.*,re.DOTALL)可以匹配所有字符,包括换行符。

如上行格式,re.IGNORECASE或者re.I可以无视字母的大小写

用sub方法替换字符串

sub()方法需要传入两个参数。第一个参数是一个字符串,用于取代发现的匹

配。第二个参数是一个字符串,即正则表达式。sub()方法返回替换完成后的字符串。

参数需要加上单引号,参数之间用逗号隔开。

>>> namesRegex = re.compile(r'Agent \w+') 意思是单词后面空格加上\w+意思为此单词删除,后面的单词被新单词替换

namesRegex.sub('CENSORED', 'Agent Alice gave the secret documents to Agent Bob.')

假如想隐去姓名,只显示姓名的第一个字母,可以用Agent (\w)\w*,传入 r'\1****'作为 sub()的第一个参数。字 符串中的\1 将由分组 1 匹配的文本所替代,也就是正则表达式的(\w)分组。 可以输入\1\2\3……。表示“在替换中输入分组 123……的文本”

agentNamesRegex = re.compile(r'Agent (\w)\w*')

忽略正则表达式字符串中的空白符和注释,可以向 re.compile() 传入变量 re.VERBOSE,作为第二个参数。

组合使用 re.IGNOREC ASE、re.DOTALL 和 re.VERBOSE

someRegexValue = re.compile('foo', re.IGNORECASE | re.DOTALL | re.VERBOSE)

ignorecase表示忽略大小写

Dotall表示让句点匹配所有字符(包括换行符)

verbose表示忽略字符中的空白字符串和#表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值