
Python可以说是最简单的编程语言,任何学过c语言的人都能快速入门,其文本处理能力强大,是工程师必不可少的工具。
“
目录
上篇
什么是脚本语言
如何安装python
hello world
随意变换字符串和数字
定义一个简单函数
for, while, if…else…结构
下篇
强大的string文本处理
列表,元组,字典
读写文本文件
导入库来实现高级功能
建一个自己的库
”
在看过python的基本语法后,下面来看看python的高级功能。
7
强大的string文本处理
a、Python对文本就很强大的处理能力,文本中的任何一个字,或者几个字,都能作为他”切片”的对象。
s= “abcabc123123”#s是一段文本字符串
“bc” in s#返回 true,判断bc是否在s中
s.islower()#返回true, 判断s是否为全小写
s.split(“1”)#以1为分隔符切片分离,s中有两个1,整个s被切成三段,返回 一个列表,列表中有三个元素,abcabc,23, 23
s.find(“bc”) # 返回bc所在位置的第一个索引
s.replace(“123”, ”xyz”) #将第一个123替换成xyz
怎么样,是不是比perl晦涩的正则表达式要容易的多?类似的方法函数还有很多,需要的时候可以直接百度。
点号前面的s代表面向对象中的对象,而后面的函数被称作字符串类的方法,只有对字符串类才能使用这些方法,这就是最基本的面向对象操作。
b、第二个重点是字符串可以采用类似列表数组的方法来操作,比如一个字符串abc,可以把他当做一个数组来看,这个数组共三个字符元素,a和b和c
s1= “abc”
s2=“123”
s3=s1+s2
print s3#打印出abc123
print s3[2]#打印出s3的第三个元素c
print s3[1:5]#打印出s3的第2个到第5个元素
print s3[1:-2]#打印出第2个到倒数第2个元素
print s1[1:3]+s2[0:2] #打印出s1的第2第3元素加上s2的第1第2元素
s3[:5]+’defg’+s3[5:-1]#在字符串第5位后面插入字符串defg,s[:5]代表s的第1到5位,s[5:-1]表示s的第6到最后一位
下面这个是比较高逼格的用法,字符串也可以像数组那样用for循环遍历,每次取出其中一个元素
for c in s3:
if c==“1”:
print c
8
列表,元组,字典
a、什么是list列表
python中的list就相当于C语言的数组,但他又比C数组更强大,可以加入不同的数据类型,并且无需事先定义列表的长度,完全动态,类似于C的链表。形式如:
L=[“aaa”, ”bbb”, ”ccc”]#字符串组成的列表
L=[“aaa”, ”bbb”, ”ccc”, 5, 6, 7] #列表支持不同数据类型混合列表,C不行
上一节说过字符串也可以当成列表处理,但字符串和列表只是类似,并不完全相同,他们本质是两个不同的class。比如列表具有排序/堆栈功能,而字符串没有。
L[2]# L列表的第三个元素
L.append(“ddd”)#在尾部添加一个元素
L.count(“bbb”)#计算元素bbb出现的次数
L.insert(3,”ddd”)#在第三个元素处插入一个新元素
L.remove(“aaa”)#删除一个元素
L.reverse()#列表次序反转
L.sort()#列表排序,数字按大小排,字符串元素按ascii码
L.pop(2) #堆栈方法,弹出第3个元素
#和字符串一样,列表也使用for循环来遍历,依次取出列表中的元素赋值给a
for a in L:
print a
b、什么是元组
元组和列表类似,长的不一样,列表方括号,元组是圆括号
T=(1,2,3)#元组用圆括号表示
列表和元组的区别是,元组不可修改,那既然不可修改还有啥用呢。在python中元组往往作为系统函数的返回值来体现,我们再看一下之前创建多返回值函数的例子:
def test(x+y):
a = x + y
b = x – y
return a,b#函数有两个返回值
c= test(10,15)#两个返回值同时赋给一个值
print c#打印出元组(25,-5)
当一个函数具有多个返回值时,获取返回值有两种方法,分别赋值给多个变量,或者作为一个元组整体赋值给一个变量,元组不可修改就是怕把返回值的次序给打乱了。这和C语言多个返回值只能返回一个数组整体类似。
c、什么是字典
字典就是perl里的哈希,其本质是个二维数组,用大括号表示,好处是数组的索引值可以是字符串。例:
a = {‘Emily’: ‘China’, ‘Kathy’: ‘US’, ‘Jason’: ‘UK’}
冒号前面的被称为索引,冒号后面的被称为值,这样使用字典:
a[‘Kathy’]#返回US
字典的使用和列表类似,只是读列表第二个元素写法是a[1],而字典是a[‘Kathy’],看着更人性化些。
字典使用的方法和列表大多类似,如pop,in,del等,不再讲述。
9
读写文本文件
a=open("C:\ aaa.txt")#打开一个文本,句柄为a,默认为只读权限
b=a.read()#把文本a中全部内容读取到b
print b
a.close()#关闭a
a=open("C:\ bbb.txt","w")#打开一个文本,句柄为a,写权限
b=’aaaaaaaaaa’
a.write(b)#将字符串b写入文本a
a.close()#关闭a
当把文本读取到python之后,我们就可以用字符串那些强大的方法来做文本处理了。还有一个更常用的读文本方法,逐行读取
for line in open("C:\ aaa.txt "):
print line
这里会自动把文本中的每行用for循环遍历,每次只读取一行,对于几万行的特大文件非常有用,采用全部读出的方法就会很慢。
10
导入库来实现高级功能
和C语言一样,许多高级功能需要导入库才能实现,比如数学里的圆周率,就需要先导入math库,下面介绍几个常用的库的例子。
a、OS,常用于判断路径,文件夹内容
Import os#导入操作系统库
a = "C:\windows"
os.path.exists(a)#判断a路径是否存在
for filename in os.listdir(a):#获取a文件夹下全部文件和子文件夹名字
print filename
b、ctyps系统库,可以调用C写的文件,外部dll,windows API等
import ctypes
dll = ctypes.WinDLL('user32.dll')#调用windows的dll
dll.LockWorkStation()#锁定当前电脑
c、互联网库,可以后台读取网页数据
import urllib2
page = urllib2.urlopen('http://www.163.com', timeout=10)
data = page.read() #从后台以纯文本读取网易网页
print data
d、excel库,可以在后台操作excel哦
import xlwt#这个库得先到网上下
a=xlwt.Workbook()#新建一个空的excel,对象为a,在内存中
b=a.add_sheet("my_sheet", cell_overwrite_ok=1)#在a中新建一个sheet名字叫my sheet,对象为b
b.write(1,1,’abc’)#对b的第一行第一列写入内容abc
a.save("C:\test.xls")#保存a到硬盘
11
建一个自己的库
之前说的这些高级库,都是别人提供的,有些是互联网上下载的,爱好者编写提供的,有些是python官方本来就自带的库,有些是微软这些第三方的大公司提供的库。总的来说,库是别人写好一个函数集合,理论上,我们自己也可以写一个库。
首先,新建一个python文件,并且保存到Python系统安装路径
File 1 : my_lib.py
def copystring ( a ):#在这个库里随便写了个函数
b=a+a
return b
File 2: my.py
import my_lib#在第二个文件中调用自己写的库
a = “abc”
print my_lib. copystring( a ) #调用库中的函数
这里其实my_lib作为了一个对象被操作,其实这也是python的核心思想之一,万物皆为对象。