本文共 3147 字,大约阅读时间需要 10 分钟。
Python有五种内置的简单类型:bool、int、long、float和complex。这些类型是不可变的,创建后类型不可更改。type()函数可用于判断变量类型。变量定义时无需声明类型,系统自行判断。
示例:
>>> a = 5>>> type(a)>>> b = 'word'>>> type(b)
| 运算符 | 描述 | 示例 |
|---|---|---|
not | 逻辑非 | not b |
and | 逻辑与 | (i <= 100) and (b == True) |
or | 逻辑或 | (i < 100) or (f > 100.1) |
Python函数定义简便,无需返回类型声明。多返回值支持。
示例:
def func(arg1, arg2): print('this is a func') 多返回值:
def func_multi_return(): return ('item1', 'item2') 一个.py文件代表一个模块。使用import访问模块成员。
示例:
import csvfile = open('file_name')reader = csv.reader(file) 从模块导入:
from csv import readerfile = open('file_name')reader = reader(file) int(obj, base=10):转换为整数,默认10进制。long(obj, base=10):转换为长整数,默认10进制。float(obj):转换为浮点数。complex(str):转换为复数。bool(obj):将整数1/0转为布尔值True/False。abs(num):返回数的绝对值。coerce(num1, num2):返回转换后的元组。divmod(num1, num2):返回除法及余数元组。pow(x, y, z):计算 (x**y) % z。split(','):分割字符串。sort():排序。isalnum():是否全字母数字且非空。isalpha():是否全字母且非空。isdigit():是否全数字且非空。islower():是否全小写字母。isupper():是否全大写字母。isspace():是否全空白字符。istitle():是否首字母大写。startswith(prefix[, start[, end]]):是否以前缀开头。endswith(suffix[, start[, end]]):是否以后缀结尾。encode([encoding, errors]):编码。decode([encoding, errors]):解码。len(): 获取字符串长度。.replace('X', 'Y'): 替换字符。.strip('X'): 删除所有字符X。string[i]: 获取第i个字符。string.find('X', x): 从x位置查找X,返回首地址或-1。string[1:3]: 切片,返回1到2字符。del str: 清空字符串。# coding=gbkimport sysimport csvimport timeitclass Store: def __init__(self): self.id = '' self.name = '' self.address = ''def loadFile(file_name, storeList): f = open(file_name) r = csv.reader(f) 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): str1, str2 = str2, str1 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 ndef saveFile(result): with open('result.csv', 'w', newline='', dialect='excel') as writer: for item in result: writer.writerow(item)if __name__ == "__main__": storeList1 = [] storeList2 = [] loadFile('brand.csv', storeList1) loadFile('other.csv', storeList2) 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') n = m if n > 4: result.append(each_row) saveFile(result) print(timeit.default_timer()) 转载地址:http://hqofk.baihongyu.com/