应用
- 等待用户输入:
raw_input("\n\nPress the enter key to exit.")
- Python数据类型转换
int(x [,base]) 将x转换为一个整数long(x [,base] ) 将x转换为一个长整数float(x) 将x转换到一个浮点数str(x) 将对象 x 转换为字符串repr(x) 将对象 x 转换为表达式字符串eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s) 将序列 s 转换为一个元组list(s) 将序列 s 转换为一个列表set(s) 转换为可变集合dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。
Python字符串格式化
print "%s : %d " % ('hz', 21)%s 格式化字符串%d 格式化整数%u 格式化无符号整型%f 格式化浮点数字,可指定小数点后的精度
常用函数(list、tup)
cmp(list1, list2) 比较两个列表的元素len(list) 列表元素个数max(list) 返回列表元素最大值min(list) 返回列表元素最小值
- tuple(seq) 将列表转换为元组。
-
list(seq)将元组转换为列表
列表函数&方法
list.append(obj) 在列表末尾添加新的对象list.count(obj) 统计某个元素在列表中出现的次数list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj) 从列表中找出某个值第一个匹配项的索引位置list.insert(index, obj) 将对象插入列表list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.remove(obj) 移除列表中某个值的第一个匹配项list.reverse() 反向列表中元素list.sort([func]) 对原列表进行排序
字符串内建函数
| 方法 | 描述 |
| string.capitalize() | 把字符串的第一个字符大写 |
| string.count(str, beg=0, end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
| string.endswith(obj, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
| string.expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。 |
| string.find(str, beg=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 |
| string.index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在 string中会报一个异常. |
| string.isalnum() | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False |
| string.isalpha() | 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False |
| string.isdigit() | 如果 string 只包含数字则返回 True 否则返回 False. |
| string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
| string.isnumeric() | 如果 string 中只包含数字字符,则返回 True,否则返回 False |
| string.isspace() | 如果 string 中只包含空格,则返回 True,否则返回 False. |
| string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
| string.join(seq) | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
| string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
| string.lower() | 转换 string 中所有大写字符为小写. |
| string.lstrip() | 截掉 string 左边的空格 |
| max(str) | 返回字符串 str 中最大的字母。 |
| min(str) | 返回字符串 str 中最小的字母。 |
| string.partition(str) | 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. |
| string.replace(str1, str2, num=string.count(str1)) | 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. |
| string.rfind(str, beg=0,end=len(string) ) | 类似于 find()函数,不过是从右边开始查找. |
| string.rindex( str, beg=0,end=len(string)) | 类似于 index(),不过是从右边开始. |
| string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
| string.rpartition(str) | 类似于 partition()函数,不过是从右边开始查找. |
| string.rstrip() | 删除 string 字符串末尾的空格. |
| string.split(str="", num=string.count(str)) | 以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串 |
| string.splitlines(num=string.count('\n')) | 按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行. |
| string.startswith(obj, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. |
| string.strip([obj]) | 在 string 上执行 lstrip()和 rstrip() |
| string.swapcase() | 翻转 string 中的大小写 |
| string.istitle() | 如果 string 是标题化的(见 title())则返回 True,否则返回 False |
| string.title() | 返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
| string.translate(str, del="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中 |
| string.upper() | 转换 string 中的小写字母为大写 |
| string.zfill(width) | 返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0 |
File(文件) 方法
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
| file的方法 | 描述 |
| close() | 关闭文件。关闭后文件不能再进行读写操作。 |
| flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
| fileno() | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
| isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
| next() | 返回文件下一行。 |
| read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
| readline([size]) | 读取整行,包括 "\n" 字符。 |
| readlines([sizehint]) | 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。 |
| seek(offset[, whence]) | 设置文件当前位置 |
| tell() | 返回文件当前位置。 |
| truncate([size]) | 截取文件,截取的字节通过size指定,默认为当前文件位置。 |
| write(str) | 将字符串写入文件,没有返回值。 |
| writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
字典内置方法
radiansdict.clear() 删除字典内所有元素radiansdict.copy() 返回一个字典的浅复制radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值radiansdict.has_key(key) 如果键在字典dict里返回true,否则返回falseradiansdict.items() 以列表返回可遍历的(键, 值) 元组数组radiansdict.keys() 以列表返回一个字典所有的键radiansdict.setdefault(key, default=None) 和get() 类似,但如果键不存在于字典中,将会添加键并将值设为defaultradiansdict.update(dict2) 把字典dict2的键/值对更新到dict里radiansdict.values() 以列表返回字典中的所有值
随机数
import randomrandom.randrange ([start,] stop [,step])random.random()
数学函数
abs(x) 返回数字的绝对值,如abs(-10) 返回 10cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j
Time 模块
Time 模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:
| 序号 | 函数及描述 |
|---|---|
| 1 | time.altzone 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。 |
| 2 | time.asctime([tupletime]) 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。 |
| 3 | time.clock( ) 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。 |
| 4 | time.ctime([secs]) 作用相当于asctime(localtime(secs)),未给参数相当于asctime() |
| 5 | time.gmtime([secs]) 接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0 |
| 6 | time.localtime([secs]) 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。 |
| 7 | time.mktime(tupletime) 接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。 |
| 8 | time.sleep(secs) 推迟调用线程的运行,secs指秒数。 |
| 9 | time.strftime(fmt[,tupletime]) 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。 |
| 10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根据fmt的格式把一个时间字符串解析为时间元组。 |
| 11 | time.time( ) 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。 |
| 12 | time.tzset() 根据环境变量TZ重新初始化时间相关设置。 |
Time模块包含了以下2个非常重要的属性:
| 序号 | 属性及描述 |
|---|---|
| 1 | time.timezone 属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。 |
| 2 | time.tzname 属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。 |
- 日期处理
#!/usr/bin/python# -*- coding: UTF-8 -*-import time; # 引入time模块import calendar;ticks = time.time()print ("time_t:", int(ticks))localtime = time.localtime(int(ticks))print ("localtime :", localtime)# 格式化成2016-05-12 20:47:50形式print (time.strftime("%Y-%m-%d %H:%M:%S", localtime))# 格式化成Thu May 12 20:47:50 2016形式strlocaltime = time.strftime("%a %b %d %H:%M:%S %Y", localtime)print (strlocaltime)# 将格式字符串转换为时间戳print (time.mktime(time.strptime(strlocaltime,"%a %b %d %H:%M:%S %Y")))# print (calendar.month(2016, 1))
结果:
time_t: 1463057682localtime : time.struct_time(tm_year=2016, tm_mon=5, tm_mday=12, tm_hour=20, tm_min=54, tm_sec=42, tm_wday=3, tm_yday=133, tm_isdst=0)2016-05-12 20:54:42Thu May 12 20:54:42 20161463057682.0
python标准异常
| 异常名称 | 描述 |
|---|---|
| BaseException | 所有异常的基类 |
| SystemExit | 解释器请求退出 |
| KeyboardInterrupt | 用户中断执行(通常是输入^C) |
| Exception | 常规错误的基类 |
| StopIteration | 迭代器没有更多的值 |
| GeneratorExit | 生成器(generator)发生异常来通知退出 |
| StandardError | 所有的内建标准异常的基类 |
| ArithmeticError | 所有数值计算错误的基类 |
| FloatingPointError | 浮点计算错误 |
| OverflowError | 数值运算超出最大限制 |
| ZeroDivisionError | 除(或取模)零 (所有数据类型) |
| AssertionError | 断言语句失败 |
| AttributeError | 对象没有这个属性 |
| EOFError | 没有内建输入,到达EOF 标记 |
| EnvironmentError | 操作系统错误的基类 |
| IOError | 输入/输出操作失败 |
| OSError | 操作系统错误 |
| WindowsError | 系统调用失败 |
| ImportError | 导入模块/对象失败 |
| LookupError | 无效数据查询的基类 |
| IndexError | 序列中没有此索引(index) |
| KeyError | 映射中没有这个键 |
| MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
| NameError | 未声明/初始化对象 (没有属性) |
| UnboundLocalError | 访问未初始化的本地变量 |
| ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
| RuntimeError | 一般的运行时错误 |
| NotImplementedError | 尚未实现的方法 |
| SyntaxError | Python 语法错误 |
| IndentationError | 缩进错误 |
| TabError | Tab 和空格混用 |
| SystemError | 一般的解释器系统错误 |
| TypeError | 对类型无效的操作 |
| ValueError | 传入无效的参数 |
| UnicodeError | Unicode 相关的错误 |
| UnicodeDecodeError | Unicode 解码时的错误 |
| UnicodeEncodeError | Unicode 编码时错误 |
| UnicodeTranslateError | Unicode 转换时错误 |
| Warning | 警告的基类 |
| DeprecationWarning | 关于被弃用的特征的警告 |
| FutureWarning | 关于构造将来语义会有改变的警告 |
| OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
| PendingDeprecationWarning | 关于特性将会被废弃的警告 |
| RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
| SyntaxWarning | 可疑的语法的警告 |
| UserWarning | 用户代码生成的警告 |
正则表达式在python中的应用
正则表达式
修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
| 修饰符 | 描述 |
|---|---|
| re.I | 使匹配对大小写不敏感 |
| re.L | 做本地化识别(locale-aware)匹配 |
| re.M | 多行匹配,影响 ^ 和 $ |
| re.S | 使 . 匹配包括换行在内的所有字符 |
| re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
| re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
正则
表达式模式
模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'/t',等价于'//t')匹配相应的特殊字符。
下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。
| 模式 | 描述 |
|---|---|
| ^ | 匹配字符串的开头 |
| $ | 匹配字符串的末尾。 |
| . | 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。 |
| [...] | 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k' |
| [^...] | 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。 |
| re* | 匹配0个或多个的表达式。 |
| re+ | 匹配1个或多个的表达式。 |
| re? | 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 |
| re{ n} | 精确匹配n个前面表达式 |
| re{ n,} | 精确匹配至少n个前面表达式。 |
| re{ n, m} | 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式 |
| a| b | 匹配a或b |
| (re) | G匹配括号内的表达式,也表示一个组 |
| (?imx) | 正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。 |
| (?-imx) | 正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。 |
| (?: re) | 类似 (...), 但是不表示一个组 |
| (?imx: re) | 在括号中使用i, m, 或 x 可选标志 |
| (?-imx: re) | 在括号中不使用i, m, 或 x 可选标志 |
| (?#...) | 注释. |
| (?= re) | 前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。 |
| (?! re) | 前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功 |
| (?> re) | 匹配的独立模式,省去回溯。 |
| \w | 匹配字母数字 |
| \W | 匹配非字母数字 |
| \s | 匹配任意空白字符,等价于 [\t\n\r\f]. |
| \S | 匹配任意非空字符 |
| \d | 匹配任意数字,等价于 [0-9]. |
| \D | 匹配任意非数字 |
| \A | 匹配字符串开始 |
| \Z | 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。c |
| \z | 匹配字符串结束 |
| \G | 匹配最后匹配完成的位置。 |
| \b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
| \B | 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
| \n, \t, 等. | 匹配一个换行符。匹配一个制表符。等 |
| \1...\9 | 匹配第n个分组的子表达式。 |
| \10 | 匹配第n个分组的子表达式,如果它经匹配。否则指的是八进制字符码的表达式。 |
正则表达式实例
字符匹配
| 实例 | 描述 |
|---|---|
| python | 匹配 "python". |
字符类
| 实例 | 描述 |
|---|---|
| [Pp]ython | 匹配 "Python" 或 "python" |
| rub[ye] | 匹配 "ruby" 或 "rube" |
| [aeiou] | 匹配中括号内的任意一个字母 |
| [0-9] | 匹配任何数字。类似于 [0123456789] |
| [a-z] | 匹配任何小写字母 |
| [A-Z] | 匹配任何大写字母 |
| [a-zA-Z0-9] | 匹配任何字母及数字 |
| [^aeiou] | 除了aeiou字母以外的所有字符 |
| [^0-9] | 匹配除了数字外的字符 |
特殊字符类
| 实例 | 描述 |
|---|---|
| . | 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 |
| \d | 匹配一个数字字符。等价于 [0-9]。 |
| \D | 匹配一个非数字字符。等价于 [^0-9]。 |
| \s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
| \S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 |
| \w | 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 |
| \W | 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 |
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
- 1
print("match: ",re.match('www', 'www.163.com').span()) # 在起始位置匹配print("match: ",re.match('com', 'www.163.com')) # 不在起始位置匹配print("search: ",re.search('www', 'www.163.com').span()) # 在起始位置匹配print("search: ",re.search('com', 'www.163.com').span()) # 不在起始位置匹配matchObj = re.match( r'(.*) are (.*?) .*', "Cats are smarter than dogs", re.M|re.I) #?是为了group(2)不会带上thanif matchObj:print ("matchObj.group() : ", matchObj.group())print ("matchObj.group(1) : ", matchObj.group(1))print ("matchObj.group(2) : ", matchObj.group(2))else:print ("No match!!")
match: (0, 3)match: Nonesearch: (0, 3)search: (8, 11)matchObj.group() : Cats are smarter than dogsmatchObj.group(1) : CatsmatchObj.group(2) : smarter
- 2
phone = "2004-959-559 # This is Phone Number"# Delete Python-style commentsprint ("Phone Num : ", re.sub(r' #.*$', "**", phone))# Remove anything other than digitsprint ("Phone Num : ", re.sub(r'\D', ".", phone))print ("Phone Num : ", re.sub(r'\D', "", phone))
Phone Num : 2004-959-559**Phone Num : 2004.959.559.......................Phone Num : 2004959559
python操作mysql数据库
Python 网络编程
- serv:
#!/usr/bin/env python# -*- coding: UTF-8 -*-#python2.7import socket # 导入 socket 模块s = socket.socket() # 创建 socket 对象host = socket.gethostname() # 获取本地主机名port = 12345 # 设置端口s.bind((host, port)) # 绑定端口s.listen(5) # 等待客户端连接while True:c, addr = s.accept() # 建立客户端连接。print '连接地址:', addrc.send('欢迎访问菜鸟教程!')c.close() # 关闭连接
- client:
#!/usr/bin/env python# -*- coding: UTF-8 -*-#python2.7import socket # 导入 socket 模块s = socket.socket() # 创建 socket 对象host = socket.gethostname() # 获取本地主机名port = 12345 # 设置端口好s.connect((host, port))print s.recv(1024)s.close()
Python SMTP发送邮件
第三方 SMTP 服务
#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服务mail_host="mail.163.com" #设置服务器mail_user="abc" #用户名mail_pass=raw_input("Please input password : ") #口令sender = 'abc@163.com'receivers = ['abc@163.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱message = MIMEText('Python send mail...', 'plain', 'utf-8')message['From'] = Header("Admin")message['To'] = Header("MyTester")message['Subject'] = Header("Hello My Lord")try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号smtpObj.login(mail_user,mail_pass)smtpObj.sendmail(sender, receivers, message.as_string())print "Send mail ok!"except smtplib.SMTPException:print "Error: Send mail failed!"
933

被折叠的 条评论
为什么被折叠?



