zoukankan      html  css  js  c++  java
  • python基本数据预处理语法函数(2)

    1、字符串格式化方法format的用法:

    < ^ >    #分别为左对齐、居中、右对齐
    '{:>18,.2f}'.format(70305084.0)      #:冒号+空白填充+右对齐+固定宽度18+浮点精度.2+浮点数声明f
    '{:^10}'.format('test')     #返回test居中,共计10个字符
    '{1} {0}'.format('one', 'two')    #{}中的数字代表排列的顺序
    'my name is {name},age is {age}'.format(name='hoho',age=19) 
    '{0:*>10}'.format(10)  # 右对齐 
    '{0:*<10}'.format(10)  ##左对齐,冒号后跟以*作为填充
    b_dict = {'name':'chuhao','age':20,'province':'shanxi'}
    print ('my name is {name}, age is {age},from {province}'.format(**b_dict)) #通过字典来对句子进行填充
    print ('{:>7.2%}'.format(0.2)) #以百分比的形式输出值
    i=1 j=2
    print('{} shape is {}'.format(i,j)) #返回1 shape is 2
    def sayhi(a,b):
        print('%s 的后面是 %s' %(a ,b))
    sayhi('i','ii')

    2、enumerate的用法:

    list=['','','一个','测试']
    for i,item in enumerate(list):
        print(i,item)
    #输出

    0 这
    1 是
    2 一个
    3 测试

    3、datetime包

    from datetime import datetime, timezone
    datetime.today()   #返回当天信息
    dt=datetime.now()   #返回现在的信息
    dt.year
    dt.hour
    dt.minute  #返回当前的分钟
    dt.second     #返回当前的秒
    dt.weekday() #返回星期几

     4、filter函数

    def is_odd(n):
        return n % 2 == 1
    newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(newlist)
    #输出结果:[1, 3, 5, 7, 9]
    
    import math
    def is_sqr(x):
        return math.sqrt(x) % 1 == 0
    newlist = filter(is_sqr, range(1, 101))
    print(newlist)
    #输出结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

     5、json模块()

    1)json.dumps()

    #json.dumps用于将dict类型的数据转换为str,因为如果直接将dict类型的数据写入json文件会报错,所以在写入数据时需要用到该函数
    import json  
    name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}    
    jsObj = json.dumps(name_emb)        
    print(name_emb)  
    print(jsObj)    
    print(type(name_emb))  
    print(type(jsObj))  
    ###返回结果如下:
    {'a': '1111', 'b': '2222', 'c': '3333', 'd': '4444'}
    {"a": "1111", "b": "2222", "c": "3333", "d": "4444"}
    <class 'dict'>
    <class 'str'>
    
    name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}                
    emb_filename = ('/home/cqh/faceData/emb_json.json')      
    jsObj = json.dumps(name_emb)      
    with open(emb_filename, "w") as f:    
        f.write(jsObj)    
        f.close()    

     2)json.loads()

    import json  
    name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}    
    jsDumps = json.dumps(name_emb)       
    jsLoads = json.loads(jsDumps)   
    print(name_emb)  
    print(jsDumps)  
    print(jsLoads)    
    print(type(name_emb))    #返回class:dict
    print(type(jsDumps))   #返回class:str
    print(type(jsLoads))    #返回class:dict   

     6、self的简单讲解:

    self表示类的实例,而非类,以如下代码为例:

    class Test:
        def prt(self):
            print(self)
            print(self.__class__)
    t=Test()
    t.prt()

    输出结果为:

    <__main__.Test object at 0x000001DCCF2C12E8>
    <class '__main__.Test'>

    由结果可以发现,self代表类的实例,self.__class__指向类。

    在解释器内部,t.qrt()等价于Test.prt(Test())

    在继承的时候,继承的是传入的实例,而非定义了self的类的实例。以如下为例:

    class Parent:
        def pprt(self):
            print(self)
     
    class Child(Parent):
        def cprt(self):
            print(self)
    c = Child()
    c.cprt()
    c.pprt()
    p = Parent()
    p.pprt()

    在运行c.pprt()的时候,由于self指得是Child类的实例,self中未定义pprt()的方法,所以沿着继承树网上找,找到了父类Parent中定义的pprt()方法,所以成功调用。

    在如下例子中,self指的是描述符类的实例:

    class Desc:
        def __get__(self, ins, cls):
            print('self in Desc: %s ' % self )
            print(self, ins, cls)
    class Test:
        x = Desc()
        def prt(self):
            print('self in Test: %s' % self)
    t = Test()
    t.prt()
    t.x

    这里调用的是t.x,也就是Test类的实例t的属性x,由于实例t中并没有定义属性x,所以找到了类属性x。该属性是描述符属性,为Desc类的实例,所以这里就没有用Test的任何方法。若直接运行Test.x也能得到相同的结果。

    另一个实例:

    class person:
        def __init__(self,name,job=None,pay=10):
            self.name=name
            self.job=job
            self.pay=pay
        def getLastName(cls):
            return cls.name.split('a')[-1]
        def getRaise(self,percent):
            self.pay=(int)(self.pay*(1+percent))
            return self.pay
    p=person('xiaoming','jixie')   #用于实例化一个对象
    p.getLastName()
    p.getRaise(0.8)

    在这里self指的是被实例化的对象p,需要调用当前的方法或者属性时,直接使用self.来进行调用就可以。

    在这里init通常被称为构造函数,用于初始化,即当实例化一个对象时,对新对象进行初始化,通过传入新对象的参数将新对象的所有属性都初始化。

     7、super函数的应用:

    参考:http://python.jobbole.com/86787/

     通过super函数实现父类的调用:

    class animal(object):
        def __init__(self,name):
            self.name=name
        def greet(self):
            print('hello i am %s' %self.name)
    class dog(animal):
        def greet(self):
            super().greet()
            print('我擦 擦')
    dog=dog('dog')
    dog.greet()
    #返回:hello i am dog 我擦 擦

    这里animal是父类,dog是子类,我们在dog类定义了greet方法,为了同时实现父类的功能,又调用了父类的方法,从而得到相应的输出结果。

    另一个继承的例子:

    class Base(object):
        def __init__(self):
            print ("enter Base")
            print ("leave Base")
    class A(Base):
        def __init__(self):
            print ("enter A")
            super(A, self).__init__()
            print ("leave A")
    class B(Base):
        def __init__(self):
            print ("enter B")
            super(B, self).__init__()
            print ("leave B")
    class C(A, B):
        def __init__(self):
            print ("enter C")
            super(C, self).__init__()
            print ("leave C")

    输出结果为:

    >>> c = C()
    enter C
    enter A
    enter B
    enter Base
    leave Base
    leave B
    leave A
    leave C
  • 相关阅读:
    PYTHON简介
    zabbix4.0搭建2
    zabbix4.0搭建1
    zabbix监控
    Linux中vim编辑命令
    零基础逆向工程25_C++_02_类的成员权限_虚函数_模板
    零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承
    零基础逆向工程23_PE结构07_重定位表_IAT表(待补充)
    零基础逆向工程22_PE结构06_导入表
    零基础逆向工程21_PE结构05_数据目录表_导出表
  • 原文地址:https://www.cnblogs.com/xiaochouk/p/8481717.html
Copyright © 2011-2022 走看看