• 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                              清空字符串

    例子

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

    参考资料

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

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

  • 相关阅读:
    JAVA之代理2CGLib
    Java并发编程:Lock
    synchronized详解
    redis哨兵机制--配置文件sentinel.conf详解
    redis.conf讲解
    [Java并发包学习八]深度剖析ConcurrentHashMap
    [Java并发包学习七]解密ThreadLocal
    T和Class以及Class的理解
    python学习笔记十:异常
    python学习笔记九:正则表达式
  • 原文地址:https://www.cnblogs.com/coder2012/p/3279149.html
Copyright © 2020-2023  润新知