Python学习札记
Python是很多公司都在使用的一种脚本语言,其语法与Perl、C++、JAVA等都大同小异。本文仅对一些比较常用的语法结构进行总结,比如字典、列表、正则匹配、读写文件等。供广大喜爱Python的同学学习交流。
字符串操作
- 去除特殊符号:s.strip() .lstrip() .rstrip(',')
- 拼接字符串:str = str1 + str2
- 连接字符串:lis = ['1','2','3'] str.join(lis)
- 查找字符串:str1
=
'hello world' str2 = 'o' pos = str1.index(str2) - 比较字符串:cmp(str1,str2)
- 字符串长度:len(str)
- 字符串复制:n * str
- 大小写转换:str.upper() str.lower()
- 翻转字符串:str1 = str2[::-1]
- 截取字符串:str[0:3] #截取第一位到第三位的字符
str[-3:-1] #截取倒数第三位与倒数第一位之间的字符
str[-3:]#截取倒数第三位到结尾的字符
- 分割字符串:array = str.split(':') #将以:分割的字符串存入数组array
数组
数组是一种列表结构,可以嵌套
- 定义:arr = [1,2,[1,2,3]]
- 删除元素:del arr[0,2]
- 插入元素:arr.append(4)
- 数组长度:len(arr)
- 遍历数组:
for i in range(len(arr)):
print arr[i]
字典
字典是由键=>值对构成的结构,可以嵌套.
- 创建字典:
直接创建:fruitDic = {"apple":1,"orange":2,"banana":3}
dict函数创建:fruitDic = dict(("apple","orange","banana"),(1,2,3)) 或 fruitDic = dict("apple"=1,"orange"=2,"banana"=3)
- 清空字典:fruitDic.clear()
- 复制字典:这里要注意浅复制和深复制的问题。浅复制是指复制对象,新字典的改变内容会使原字典也改变;对于深复制,新字典的改变不会影响原来的字典。
浅复制方式:newDic = origDic.copy()
深复制方式:from copy import deepcopy
newDic =deepcopy(origDic)
- 判断字典是否包含某键:dict.has_key('apple')
- 字典的键值:dict.keys() dict.values()
- 移除某键值对:dict.pop('apple')
- 字典遍历:
for i in dict:
print dict[i]
for (k,v) in dict.items(): #dict.items()表示返回-字典中(键, 值)对元组的列表
print "%s:%s" %k,v
for k,v in dict.iteritems(): #dict.iteritems()表示返回一个迭代对象
print "%s:%s" %k,v
正则匹配
Python的re模块提供了各种正则表达式的匹配操作,在文本解析、复杂字符串分子以及信息提取时非常有效,在脚本中应加入import re。
1. 正则表达式是否匹配字符串的全部或部分
str = 'I love Python.'
regx = '.*love' #正则表达式,可参见另一篇博客。
if re.search(regx, str):
print "match"
else:
print "not match"
2. 正则表达式是否匹配整个字符串
if re.match(regx, str):
print "match"
else:
print "not match"
3. 获取匹配部分:
使用group()函数,正则表达式中圆括号匹配的模式,分别对应group(1),group(2),...。而group()则对应最大匹配结果。
str = 'I love Python and JAVA.'
regx = 'I love (.*) and (.*)' #正则表达式,可参见另一篇博客。
match = re.search(regx, str)
if match:
print match.group(1)+'\t'+match.group(2) #显示结果为 Python JAVA
else:
print "not match"
4. 将所有匹配的子串存入数组:
array = re.findall(regx, str)
5. 创建正则表达式对象
另外,还可以通过compile函数创建一个正则表达式对象,进行相应的匹配。
reobj = re.compile(regx)
match = reobj.search(str)
if match: #或直接 if reobj.match(str): 或 if reobj.search(str):
print match.group(1)+...
else:
print "not match"
同理,也可以将所有匹配子串存入数组:
reobj = re.compile(regx)
array = reobj.findall(str)
读写文件操作
Python中对文件进行读写操作的函数式open():fobj = open(filename,mode)
mode选项:
- r:读文件;
- w:覆盖方式写入文件;
- w+:追加写文件;
- wb:写二进制文件;
1. 按行读文件:
fobj = open("./filename","r")
for line in fobj:
line = line.strip('\n') #去掉换行符
print line
fobj = close()
2. 写文件
fobj = open("./filename","w+")
fobj.write("hello world\n")
fobj = close()
3. 其他文件操作
- fobj.readline():读出一行信息;
- fobj.readlines():读出所有行(即整个文件);
- fobj.writelines(list):把list中的字符串按行写入文件;
逻辑运算符
与:and
或:or
非:not
Others
退出脚本:sys.exit()
Python学习札记的更多相关文章
- python学习札记(1)
首先给大家推荐一个很好的python入门网站,感觉比<python基础>之类的书更容易懂,廖雪峰小站,希望有学习资源同学们也能多多交流.下面是今天所学: 下面总结一些非常有特色的函数及其应 ...
- Python学习札记(二十五) 函数式编程6 匿名函数
参考:匿名函数 NOTE 1.Python对匿名函数提供了有限的支持. eg. #!/usr/bin/env python3 def main(): lis = list(map(lambda x: ...
- Python学习札记-eval函数
eval()函数 eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果 语法上:调用的是:eval(expression,globals=No ...
- Python学习札记(四十三) IO 3
参考:操作文件和目录 NOTE: 1.Python内置的os模块可以直接调用操作系统提供的接口函数: 2.os.name 打印操作系统的名称:如果是posix,说明系统是Linux.Unix或Mac ...
- Python学习札记(四十二) IO 2
参考:StringIO和BytesIO NOTE 1.StringIO: 顾名思义就是在内存中读写str. #!/usr/bin/env python from io import BytesIO a ...
- Python学习札记(四十) 面向对象编程 Object Oriented Program 11
参考:使用元类 NOTE: type() 1.type()函数可以用于检查一个类或者变量的类型. #!/usr/bin/env python3 class Myclass(object): " ...
- Python学习札记(三十九) 面向对象编程 Object Oriented Program 10
参考:使用枚举类 NOTE #!/usr/bin/env python3 from enum import Enum def main(): Mouth = Enum('Mouth', ('Jan', ...
- Python学习札记(三十八) 面向对象编程 Object Oriented Program 9
参考:多重继承 NOTE #!/usr/bin/env python3 class Animal(object): def __init__(self, name): self.name = name ...
- Python学习札记(三十七) 面向对象编程 Object Oriented Program 8 @property
参考:@property NOTE 1.在绑定参数时,为了避免对属性不符合逻辑的操作,需要对传入的参数进行审核. #!/usr/bin/env python3 class MyClass(object ...
随机推荐
- 关于js闭包官方解释庖丁解牛式理解
闭包:是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 变量+环境 首先按这个句子主谓宾来分解.闭包是一个表达式,通常是一个函数. 这意味着第一它 ...
- 变量对象vs活动对象
这是我见过描述的最为详尽的关于变量对象.活动对象以及闭包的解析,来自知乎,感谢答主: 作者:闭家锁链接:https://www.zhihu.com/question/36393048/answer/7 ...
- 6.0docker Dockerfile文件
指令格式 #注释 FROM :基础镜像 MAINTAINER:镜像的作者信息 RUN :指定(构建过程中)当前镜像中运行的命令 EXPOSE :指定运行镜像的容器应用程序所使用的端口 容器但不会打开, ...
- Python自动化运维 - Django(二)Ajax基础 - 自定义分页
Ajax基础 AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. 什么是Ajax AJAX = 异步 Java ...
- python基础===新式类与经典类
首先: Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Python 3.x中默认都是新式类,不必显式的继承object 这两种类的区别: 新式类重定义的方法更多,当然这不 ...
- centos 安装flash
linux系统中安装flash插件 linux中安装flashplayer插件的简单方法: 1.下载其中最新版本的播放器,下载地址: http://get.adobe.com/cn/flashplay ...
- 64_l5
libsmartcols-2.29.1-2.fc26.x86_64.rpm 13-Feb-2017 07:04 150590 libsmartcols-devel-2.29.1-2.fc26.i686 ...
- pandas+sqlalchemy 保存数据到mysql
import pandas as pd from sqlalchemy import create_engine data3={"lsit1":[1,2],"lsit2& ...
- OC 07 类的扩展
1.NSDate的使用 NSDate是Cocoa中⽤于处理⽇期和时间的基础类,封装了某⼀给定的时刻(含日期,时间,时区) 注意NSLog(@“%@”,nowDate);⽆论你是哪个时区的时间,打印时总 ...
- Linux操作系统中内存buffer和cache的区别--从free命令说起(转)
原文链接:http://os.51cto.com/art/200709/56603.htm 我们一开始,先从Free命令说起. Free free 命令相对于top 提供了更简洁的查看系统内存使用情况 ...