Python变量/运算符/函数/模块/string

Python笔记(一)

1.变量类型

  Python 有五个内置的简单类型:boolintlongfloat 和 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                              清空字符串

例子

Python变量/运算符/函数/模块/string
# 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')

                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()
View Code

 

参考资料

http://www.ibm.com/developerworks/cn/opensource/os-python1/

http://www.cnblogs.com/happyframework/p/3255962.html

你可能感兴趣的:(python)