Python笔记(一)
1.变量类型
Python 有五个内置的简单类型:bool
、int
、long
、float
和 complex
。这些类型是不可变的,就是说整数对象一旦创建,其类型便不可更改。
type()函数可以用来判断一个变量的类型
定义变量时候,不需要明确表明这个变量是那种类型,系统会自动判断你所赋值的类型是什么
>>> a = 5 >>> type(a) <type 'int'> >>> b = 'word' >>> type(b) <type 'str'>
2.逻辑运算符
运算符 | 描述 | 示例 |
not |
逻辑非 | not b |
and |
逻辑与 | (i <= 100) and (b == True) |
or |
逻辑或 | (i < 100) or (f > 100.1) |
3.函数定义
Python的函数定义很简单,没有需要特定的返回类型
def func(argc1,argc2...): print ‘this is a func’
Python函数有个好处,是可以一次返回多个值
def func_muti_return(): return (‘item1’, ‘item2’)
4.模块
一个.py文件代表一个模块。
1.import module 必须通过module.membe来访问member 2.from module import member 可直接访问 例如: import csv file = open('file_name') rd = csv.reader(file) #-------------------------------- from csv import reader file = open('file_name') rd = reader(file)
5.常用函数
int(obj,base=10) 可接受进制参数,默认10进制。返回一个字符串或数值对象的整型表示
long(obj,base=10) 可接受进制参数,返回一个字符串或数据对象的长整型表示
float(obj) 返回一个字符串或数据对象的长整型表示
complex(str) 返回一个字符串的复数表示,或者根据给定实数生产复数对象
bool(obj) 将整数型1和0转换为标注布尔值True和False
abs(num) 返回给定参数的(num)绝对值
coerce(num1,num2) 仅返回一个包含类型转换完毕的两个数值元素的元组 如返回(1,2)
divmod(num1,num2) 把除法个取余运算集合起来,返回一个包含商和余数的元组
pow(x,y,z) 相当于 (x**y)%z,常用语密码运算
split(',') 分割函数
sort() 排列
isalnum() 是否全是字母和数字,并至少有一个字符
isalpha() 是否全是字母,并至少有一个字符
isdigit() 是否全是数字,并至少有一个字符 ,如果是全数字返回True,否则返回False
islower() S中的字母是否全是小写
isupper() S中的字母是否是大写
isspace() 是否全是空白字符,并至少有一个字符
istitle() 是否是首字母大写的
startswith(prefix[, start[, end]]) 是否以prefix开头
endswith(suffix[,start[, end]]) 以suffix结尾
encode([encoding[,errors]]) 编码
decode([encoding[,errors]]) 解码
6.字符串操作
len() 获取字符串长度
.replace('X','Y') 替换
.strip('X') 删除所有字符X
string[i] 第i位置上的字符
.find('X', x) 从x位置开始,找到目标返回首地址,失败返回-1
string[1:3] 可以进行切片,返回1到2的字符,3位置上的并不返回
del str 清空字符串
例子
# coding=gbk import sys import csv import timeit class Store: def __init__(self): self.id = '' self.name = '' self.address = '' def loadFile(file_name, storeList): f = open(file_name) r = csv.reader(f) type = sys.getfilesystemencoding() for line in r: m_store = Store() m_store.id = line[0] m_store.name = line[1] m_store.address = line[2] storeList.append(m_store) def match(str1, str2): n = 0 i = 0 p = 0 if len(str1) > len(str2): temp = str2 str2 = str1 str1 = temp str1 = str1.decode('gbk') str2 = str2.decode('gbk') while i < len(str1): temp = p if p+1 >= len(str2): break p = str2.find(str1[i], p+1) if p != -1: n += 1 else: p = temp i += 1 return n def saveFile(result): writer = csv.writer(open('result.csv','w'), dialect='excel') for item in result: writer.writerow(item) if __name__=="__main__": storeList1 = [] storeList2 = [] loadFile('brand.csv', storeList1) loadFile('other.csv', storeList2) #for item in storeList2: #print item.id+' '+item.name+' '+item.address result = [] for item1 in storeList1: n = 0 each_row = [item1.id,item1.name,item1.address,'','',''] for item2 in storeList2: m = 0 m += match(item1.name, item2.name) m += match(item1.address, item2.address) if m < len(item1.address)/2 and m < len(item2.address)/2: continue if m > n: each_row[3] = item2.id each_row[4] = item2.name each_row[5] = item2.address.strip(' ') n = m if n>4: result.append(each_row) #print each_row[1].decode('gbk')+each_row[2].decode('gbk')+each_row[4].decode('gbk')+each_row[5].decode('gbk') saveFile(result) print timeit.default_timer()