python常用函数语法(骚操作)

目录

 

1、列表操作

2、字典处理

3、字符串操作

4、模式匹配与正则表达式

5、shutil模块

6、调试

7、保持时间、计划任务、启动程序

8、发送电子邮件和短信

9、多线程编程


1、列表操作

用下标取得列表中的单个值;负数下标。

列表连接和复制

del语句删除列表中的值del spam[2]

index在列表中查找值,找到则返回值的下标

append、insert在列表中添加值

append将参数添加到列表末位

insert()方法的第一个参数是新值的下标,第二个参数是要插入的新值

remove从列表中删除值

spam.sort(reverse=True)排序

spam.sort(key=str.lower)

元组与列表的主要区别还在于,元组像字符串一样,是不可变的。元组不能让它们的值被修改、添加或删除

函数 list()和 tuple()将返回传递给它们的值的列表和元组版本

copy.copy(),可以用来复制列表或字典这样的可变值,而不只是复制引用

如果要复制的列表中包含了列表,那就使用 copy.deepcopy()函数来代替

2、字典处理

字典是不排序的,所以不能像列表那样切片

keys、values、items方法对应返回键、值、键-值对

字典有一个get()方法,它有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值0

 picnicItems = {'apples': 5, 'cups': 2}
>>> 'I am bringing ' + str(picnicItems.get('cups', 0)) + ' cups.'
'I am bringing 2 cups.'
>>> 'I am bringing ' + str(picnicItems.get('eggs', 0)) + ' eggs.'
'I am bringing 0 eggs.

setdefault()为字典中某个键设置一个默认值,当该键没有任何值时使用它

3、字符串操作

字符串可以用双引号开始和结束,就像用单引号一样;

可以在字符串开始的引号之前加上 r,使它成为原始字符串。“原始字符串”完全忽略所有的转义字符,打印出字符串中所有的倒斜杠;

多行字符串的起止是 3 个单引号或 3 个双引号;

isalpha()返回 True,如果字符串只包含字母,并且非空;
 isalnum()返回 True,如果字符串只包含字母和数字,并且非空;
 isdecimal()返回 True,如果字符串只包含数字字符,并且非空;
 isspace()返回 True,如果字符串只包含空格、制表符和换行,并且非空;
 istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。

字符串方法 startswith()和 endswith()

join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串。返回的字符串由传入的列表中每个字符串连接而成;

split()方法做的事情正好相反:它针对一个字符串调用,返回一个字符串列表。

rjust()和 ljust()字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。这两个方法的第一个参数是一个整数长度,用于对齐字符串;center()字符串方法与 ljust()与 rjust()类似,但它让文本居中,而不是左对齐或右对齐。

删除字符串左边、右边或两边的空白字符(空格、制表符和换行符)。strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符。lstrip()和 rstrip()方法将相应删除左边或右边的空白字符。

pyperclip 模块有 copy()和 paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。将程序的输出发送到剪贴板,使它很容易粘贴到邮件、文字处理程序或其他软件中。

4、正则表达式

用 re.compile()函数创建一个 Regex 对象(记得使用原始字符串)。
向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
调用 Match 对象的 group()方法,返回实际匹配文本的字符串。

|管道实现多个中匹配一个,?实现可选匹配,*(称为星号)意味着“匹配零次或多次”,+(加号)则意味着“匹配一次或多次”,如果想要一个分组重复特定次数,就在正则表达式中该分组的后面,跟上花括号{}包围的数字。

\d 0 到 9 的任何数字 · {n,}匹配 n 次或更多前面的分组。
\D 除 0 到 9 的数字以外的任何字符 · {,m}匹配零次到 m 次前面的分组。
\w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符) · {n,m}匹配至少 n 次、至多 m 次前面的分组。
\W 除字母、数字和下划线以外的任何字符 · {n,m}?或*?或+?对前面的分组进行非贪心匹配。
\s 空格、制表符或换行符(可以认为是匹配“空白”字符) · ^spam 意味着字符串必须以 spam 开始。
\S 除空格、制表符和换行符以外的任何字符 · spam$意味着字符串必须以 spam 结束。
· ?匹配零次或一次前面的分组。 · .匹配所有字符,换行符除外。
· *匹配零次或多次前面的分组。 · \d、\w 和\s 分别匹配数字、单词和空格。
· +匹配一次或多次前面的分组。 · \D、\W 和\S 分别匹配出数字、单词和空格外的所有字符。
· {n}匹配 n 次前面的分组。 · [abc]匹配方括号内的任意字符(诸如 a、b 或 c)。
    · [^abc]匹配不在方括号内的任意字符。

sub替换字符串

import pyperclip, re
phoneRegex = re.compile(r'''(
(\d{3}|\(\d{3}\))? # area code
(\s|-|\.)? # separator
(\d{3}) # first 3 digits
(\s|-|\.) # separator
(\d{4}) # last 4 digits
(\s*(ext|x|ext.)\s*(\d{2,5}))? # extension
)''', re.VERBOSE)

emailRegex = re.compile(r'''([a-zA-Z0-9._%+-]+ # username
 @ # @ symbol
 [a-zA-Z0-9.-]+ # domain name
(\.[a-zA-Z]{2,4}) # dot-something
)''', re.VERBOSE)

5、shutil模块

调用shutil.copy(source, destination),将路径source 处的文件复制到路径destination处的文件夹(source 和 destination 都是字符串)。如果 destination 是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。

调用 shutil.move(source, destination),将路径 source 处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。

6、调试

用 try 和 except 语句来处理 Python 的异常;取得反向跟踪的字符串def bacon():
raise Exception('This is the error message.')

断言assert 语句执行。如果检查失败,就会抛出异常

日志模块logging

import logging
logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s
- %(message)s')

7、保持时间、计划任务、启动程序

time 模块

记录程序运行时间

 startTime = time.time()
prod = calcProd()
endTime = time.time()

8、发送电子邮件和短信

正如HTTP 是计算机用来通过因特网发送网页的协议,简单邮件传输协议(SMTP)是用于发送电子邮件的协议。SMTP 规定电子邮件应该如何格式化、加密、在邮件服务器之间传递,以及在你点击发送后,计算机要处理的所有其他细节。

>>> import smtplib
>>> smtpObj = smtplib.SMTP('smtp.example.com', 587)
>>> smtpObj.ehlo()

smtpObj.starttls()

smtpObj.login('[email protected]', 'MY _ _ SECRET _ _ PASSWORD')

smtpObj.sendmail('[email protected]', '[email protected]', 'Subject: So long.\nDear Alice, so long and thanks for all the fish. Sincerely, Bob')

smtpObj.quit()

配置 SMTP 服务器和端口,搜索“<你的提供商> SMTP 设置”,应该能找到相应的服务器和端口。

得到电子邮件提供商的域名和端口信息后,调用 smtplib.SMTP()创建一个 SMTP对象,传入域名作为一个字符串参数,传入端口作为整数参数。SMTP 对象表示与SMTP 邮件服务器的连接,它有一些发送电子邮件的方法。

连接到 Gmail:
>>> smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
>>> type(smtpObj)

如果 smtplib.SMTP()调用不成功,你的 SMTP 服务器可能不支持 TLS 端口 587。在这种情况下,你需要利smtplib.SMTP_SSL()和 465 端口,来创建 SMTP 对象。

>>> smtpObj = smtplib.SMTP_SSL('smtp.gmail.com', 465)

得到 SMTP 对象后,调用它的名字古怪的 EHLO()方法,向 SMTP 电子邮件服务器“打招呼”。这种问候是 SMTP 中的第一步,对于建立到服务器的连接是很重要的。你不需要知道这些协议的细节。只要确保得到 SMTP 对象后,第一件事就是调用 ehlo()方法,否则以后的方法调用会导致错误。

smtpObj.ehlo()

如果要连接到 SMTP 服务器的 587 端口(即使用 TLS 加密),接下来需要调用starttls()方法。这是为连接实现加密必须的步骤。如果要连接到465 端口(使用 SSL),加密已经设置好了,你应该跳过这一步。

smtpObj.starttls()

登录到电子邮件提供商的 SMTP 服务器后,可以调用的 sendmail()方法来发送电子邮件

smtpObj.sendmail('my _ _ email _ _ [email protected]', '[email protected]',
'Subject: So long.\nDear Alice, so long and thanks for all the fish. Sincerely,Bob')

确保在完成发送电子邮件时,调用 quit()方法

 smtpObj.quit()

9、多线程编程

thread 模块提供了基本的线程和锁定支持;而 threading 模块提供了更高级别、功能更全面的线程管理。使用 Queue 模块,用户可以创建一个队列数据结构,用于在多线程之间进行共享。

对 象  描述
Thread 表示一个执行线程的对象
Lock 锁原语对象(和 thread 模块中的锁一样)
RLock 可重入锁对象,使单一线程可以(再次)获得已持有的锁(递归锁)
Condition 条件变量对象,使得一个线程等待另一个线程满足特定的“条件”,比如改变状态或某个数据值
Event 条件变量的通用版本,任意数量的线程等待某个事件的发生,在该事件发生后所有线程将被激活
Semaphore 为线程间共享的有限资源提供了一个“计数器”,如果没有可用资源时会被阻塞
BoundedSemaphore 与 Semaphore 相似,不过它不允许超过初始值
Timer 与 Thread 相似,不过它要在运行前等待一段时间
Barrier 创建一个“障碍”,必须达到指定数量的线程后才可以继续
Thread 对象的属性和方法
属 性  描 述
Thread 对象数据属性  
name 线程名
ident 线程的标识符
daemon 布尔标志,表示这个线程是否是守护线程
Thread 对象方法  
_init_(group=None, tatget=None, name=None, args=(),
kwargs ={}, verbose=None, daemon=None)③
实例化一个线程对象,需要有一个可调用的 target,以及其参数 args或 kwargs。还可以传递 name 或 group 参数,不过后者还未实现。此外,verbose 标志也是可接受的。而 daemon 的值将会设定thread.daemon 属性/标志
start() 开始执行该线程
run() 定义线程功能的方法(通常在子类中被应用开发者重写)
join (timeout=None)   直至启动的线程终止之前一直挂起;除非给出了 timeout(秒),否则会一直阻塞
getName() 返回线程名
setName (name) 设定线程名
isAlivel /is_alive () 布尔标志,表示这个线程是否还存活
isDaemon() 如果是守护线程,则返回 True;否则,返回 False
setDaemon(daemonic) 把线程的守护标志设定为布尔值 daemonic(必须在线程 start()之前调用)

 

一个人啃书吃力啊,有没有来吹牛皮的?

你可能感兴趣的:(python骚操作)