zoukankan      html  css  js  c++  java
  • python第二周数据类型 字符编码 文件处理

    第一数据类型需要学习的几个点:

    用途

    定义方式

    常用操作和内置的方法

    该类型总结:

    可以存一个值或者多个值

    只能存储一个值

    可以存储多个值,值都可以是什么类型

    有序或者无序

    可变或者不可变

    二:数字整数与浮点

    age=10

    浮点类型

    salary=float(300.3)

     salary=300.03 print(salary)

    salary=300.03  
    print(salary)


    长整形(了解)
        在python2中(python3中没有长整形的概念):      
        >>> num=2L
        >>> type(num)
        <type 'long'>

    #复数(了解)  
        >>> x=1-2j
        >>> x.real
        1.0
        >>> x.imag
        -2.0  

    第三 字符串的用法


    name='egon'

    优先掌握的操作:
    1.字符串按照索引取值,正向取值反向取值,步长,反向取值步长2.字符串切片
    print(aa[-5:])  取倒数5个数
     
    name='hello word'
    #字符串从0开始  
    print(name[0])
    #字符串0到5
    print(name[0:5])
    #倒数第二个,反着取数
    print(name[-2])
    
    #第五个是空格,反着取步长是1,负号代表反着取值,
    # oll   5432   顾头不顾尾
    print(name[5:1:-1])
    附加说明:字符串取得值是新获取的值新的内存空间,原来的字符串没有改变

    3.长度字符串长度
    print(len(name))
    10

    4.成员运算in和not in
    print('hello' in  name)
    print('hello' not in  name)
    print('eeee' not in  name)
    True
    False
    True

    第五移除空白

    name='  egon  '
    
    print(name.strip())
    print(name.lstrip())
    print(name.rstrip())
    
    name2='**egon**'
    
    print(name2.strip('*'))
    print(name2.lstrip('*'))
    print(name2.rstrip('*'))

    egon
    egon 
      egon
    egon
    egon**
    **egon

    6.切分split

    name='jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false'
    
    cc=name.split(':')
    
    print(cc)
    print(cc[0])
    
    print(name)
    
    ['jenkins', 'x', '997', '995', 'Jenkins Automation Server', '/var/lib/jenkins', '/bin/false']
    jenkins
    jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false
    
    

     循环

    name='jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false'


    print(list(name))
    ['j', 'e', 'n' .....] 放入了类表中

    for i in name
      print i

    切片:第二个参数1表示切得次数
    file_path='C:\a\d.txt'
    print(file_path.split('\',1))
    #['C:', 'a\d.txt']
    print(file_path.split('\'))
    #['C:', 'a', 'd.txt']
    
    循环
    只有0的时候才能省略开始的位置range(0,10,2)   range(10)
    
    for i in range(0,10,2):
        print(i)
    
    
    for i in range(10):
        print(i)
        
        
    
    name='hello word'
    
    for i in range(len(name)):
        print(name[i])
        
    
    第二掌握的
    #1、strip,lstrip,rstrip
    # print("**alex****".strip('*'))
    # print("**alex****".lstrip('*'))
    # print("**alex****".rstrip('*'))
    
    #2、lower,upper
    # print('ALeX'.lower())
    # print('aaa'.upper())
    
    3.startswith,endswith
    
    name='hello word'
    
    print(name.startswith('h'))
    print(name.startswith('hello'))
    print(name.endswith('d'))
    
    4.format的三种用法
    print('my name is %s age is %s ttt' %('egon',18))
    
    print('my name is {} age is {}'.format('egon',18))
    
    print('my{0} name is {1} age {1} i  {0} s {1}'.format('egon',18))
    
    print('my{name} name is {pp} age'.format(pp=18,name='egon'))
    
    
    5.split和join
    
    info='root:x:0:0'
    l=info.split(':')
    print(l)
    
    print(':'.join(l))
    print(''.join(l))
    
    
    6.replace 替换和全部替换.
    
    
    info='root:x:0:0'
    
    
    print(info.replace(':','==',2))
    print(info.replace(':','=='))
    
    7.isgigit
    aa='55'
    print(aa.isdigit())
    
    aa=55
    print(aa.isdigit())
    #AttributeError: 'int' object has no attribute 'isdigit' 下面的报错init 不能用这个方法,只有字符串才行
    
    
    #1、find,rfind, 
    
    index,rindex,  查找字符串对应的索引数字
    
    count  统计字符串出现的次数
    
    aa='tt  hello word hello wordhello word'
    
    
    print(aa.index('h'))
    
    name='egon say hello'
    print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
    print(name.find('o')) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
    
    
    
    
    
    #2、center,ljust,rjust,zfill  对齐填充字符
    #3、expandtabs   修改tab键默认的空格为指定的空格,修改4个空格为多个
    #4、captalize,swapcase,title   大写首字母或者单词
    #5、is数字系列  是否数字 ,罗马数字和汉字数字是否数字
    #6、is其他
    
    
    
    #1、strip,lstrip,rstrip
    #2、lower,upper
    #3、startswith,endswith
    #4、format的三种玩法
    #5、split,rsplit
    #6、join
    #7、replace
    #8、isdigit
    
    复制代码
    
     
    
    复制代码
    #strip
    name='*egon**'
    print(name.strip('*'))
    print(name.lstrip('*'))
    print(name.rstrip('*'))
    
    #lower,upper
    name='egon'
    print(name.lower())
    print(name.upper())
    
    #startswith,endswith
    name='alex_SB'
    print(name.endswith('SB'))
    print(name.startswith('alex'))
    
    #format的三种玩法
    res='{} {} {}'.format('egon',18,'male')
    res='{1} {0} {1}'.format('egon',18,'male')
    res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
    
    #split
    name='root:x:0:0::/root:/bin/bash'
    print(name.split(':')) #默认分隔符为空格
    name='C:/a/b/c/d.txt' #只想拿到顶级目录
    print(name.split('/',1))
    
    name='a|b|c'
    print(name.rsplit('|',1)) #从右开始切分
    
    #join
    tag=' '
    print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串
    
    #replace
    name='alex say :i have one tesla,my name is alex'
    print(name.replace('alex','SB',1))
    
    #isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
    age=input('>>: ')
    print(age.isdigit())
    
    复制代码
    
     其他操作(了解即可)
    
    #1、find,rfind,index,rindex,count
    #2、center,ljust,rjust,zfill
    #3、expandtabs
    #4、captalize,swapcase,title
    #5、is数字系列
    #6、is其他
    
     
    
    复制代码
    #find,rfind,index,rindex,count
    name='egon say hello'
    print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
    # print(name.index('e',2,4)) #同上,但是找不到会报错
    print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有
    
    #center,ljust,rjust,zfill
    name='egon'
    print(name.center(30,'-'))
    print(name.ljust(30,'*'))
    print(name.rjust(30,'*'))
    print(name.zfill(50)) #用0填充
    
    #expandtabs
    name='egon	hello'
    print(name)
    print(name.expandtabs(1))
    
    #captalize,swapcase,title
    print(name.capitalize()) #首字母大写
    print(name.swapcase()) #大小写翻转
    msg='egon say hi'
    print(msg.title()) #每个单词的首字母大写
    
    #is数字系列
    #在python3中
    num1=b'4' #bytes
    num2=u'4' #unicode,python3中无需加u就是unicode
    num3='' #中文数字
    num4='' #罗马数字
    
    #isdigt:bytes,unicode
    print(num1.isdigit()) #True
    print(num2.isdigit()) #True
    print(num3.isdigit()) #False
    print(num4.isdigit()) #False
    
    #isdecimal:uncicode
    #bytes类型无isdecimal方法
    print(num2.isdecimal()) #True
    print(num3.isdecimal()) #False
    print(num4.isdecimal()) #False
    
    #isnumberic:unicode,中文数字,罗马数字
    #bytes类型无isnumberic方法
    print(num2.isnumeric()) #True
    print(num3.isnumeric()) #True
    print(num4.isnumeric()) #True
    
    #三者不能判断浮点数
    num5='4.3'
    print(num5.isdigit())
    print(num5.isdecimal())
    print(num5.isnumeric())
    '''
    总结:
        最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
        如果要判断中文数字或罗马数字,则需要用到isnumeric
    '''
    
    #is其他
    print('===>')
    name='egon123'
    print(name.isalnum()) #字符串由字母或数字组成
    print(name.isalpha()) #字符串只由字母组成
    
    print(name.isidentifier())
    print(name.islower())
    print(name.isupper())
    print(name.isspace())
    print(name.istitle())
    
    复制代码
    第四: 列表:
    
    #优先掌握的操作:
    #1、按索引存取值(正向存取+反向存取):即可存也可以取   
    name=['aa','bb','cc']
    
    print(name[0])
    print(name[-2:]) #取倒数两个值
    print(name[:-1]) #取除了最后一个值剩下的值,或者说所有值除了最后一个
    name[1]='xx'
    print(name)   
    #2、切片(顾头不顾尾,步长)
    print(name[1:3])
    #3、长度
    print(len(name))
    #4、成员运算in和not in
    print('aa' in name)
    print('aa' not in name)
    #5、追加
    name=['aa','bb','cc','dd','ee']
    print(name.append('tt'))
    print(name)
    ['aa', 'bb', 'cc', 'dd', 'ee', 'tt']
    #6、删除
    name=['aa','bb','cc','dd','ee']
    vl=name.pop()  # pop的删除值还可以获取到删除的值,默认从右到左删除
    #name.remove('tt') #remove单纯删除
    vl=name.pop(2) #cc 指定了值就是制定索引值从左到右
    print(vl)
    print(name)
    结果
    # ['aa', 'bb', 'cc', 'dd']
    
    
    name=['aa','bb','cc','dd','ee']
    name.insert(1,'66') #在索引1的位置插入值,或者说在一之前插入值
    # name.clear() #清空整个列表
    print(name)
    
    name=['aa','bb','cc','dd','ee']
    name.insert(1,'66') #在索引1的位置插入值,或者说在一之前插入值
    # name.clear() #清空整个列表
    name.reverse() #反过来显示
    print(name)
    
    #下面是显示索引号
    # my_girl_friends=['alex','wupeiqi','yuanhao','yuanhao',4,5]
    # print(my_girl_friends.index('wupeiqi'))
    # print(my_girl_friends.index('wupeiqissssss'))
    
    #反转排序
    
    # l=[1,10,4,11,2,]
    # l.sort(reverse=True)
    # print(l)
    l.sort(reverse=True)
    
    l=['egon','alex','wupei']
    l.sort()
    print(l)
    #首字母排序
    #['alex', 'egon', 'wupei']
    
    #7、循环
    # my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
    
    # i=0
    # while i < len(my_girl_friends):
    #     print(my_girl_friends[i])
    #     i+=1
    
    # for item in my_girl_friends:
    #     print(item)
    
    # for i in range(10):
    #     if i== 3:
    #         break
    #         # continue
    #     print(i)
    # else:
    #     print('===>')
    元组:元组和列表相似,但是元组是不可变类型(不可变类型可以当做字典的key).如果用于只读可以使用元组
    
    aa=(11,22,33,44,55)
    
    print(type(aa))
    
    
    #元组里面可以存放列表,列表里面的元素可以修改,但是列表整体不能修改替换为别的值
    t=(1,2,['a','b'])
    print(id(t[2]))
    t[2][0]='A'
    print(id(t[2]))
    print(t)
    
    age=(11,22,33,44,55)
    
    print(type(age))
    
    print(age.index(33))
    #print(age.index(33333))  #不存在的索引报错
    
    print(age.count(3333))
    
    ============
    
    
    msg_dic={
    'apple':10,
    'tesla':100000,
    'mac':3000,
    'lenovo':30000,
    'chicken':10,
    }
    
    for i in msg_dic:
        print('可购买的商品:', i, '个数', msg_dic[i])
    goods=[]
    while True:
        sp = input("输入买的商品:")
        if sp not in msg_dic:
            print('输入的商品不存在.')
            continue
        while True:
            gs=input("输入买的个数:")
            if not gs.isdigit():
                print('输入的个数不是数字')
                continue
            break
        goods.append((sp,gs))
    
        print(goods)
    ============================
    字典:
    #作用:存多个值,key-value存取,取值速度快
    
    #定义:key必须是不可变类型,value可以是任意类型
    info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
    或
    info=dict(name='egon',age=18,sex='male')
    或
    info=dict([['name','egon'],('age',18)])
    或
    {}.fromkeys(('name','age','sex'),None)
    
    #优先掌握的操作:
    #1、按key存取值:可存可取
    print(info['sex'])
    取值:
    for i in info:
        print(i)
    设置值: dict.setdefault(key,defvalue)  #设置一个默认值,如果有这个值就用原来的值,如果没有就使用新的复制
    info={'name':'egon','age':18,'sex':'male'}
    
    info.setdefault('tt',66)
    info.setdefault('name','erdan')
    
    print(info)
    
    #{'name': 'egon', 'age': 18, 'sex': 'male', 'tt': 66}
        
        
    #2、长度len
    
    info={'name':'egon','age':18,'sex':'male'}
    print(len(info))
    3
    
    #3、成员运算in和not in  根据key来说
    info={'name':'egon','age':18,'sex':'male'}
    
    print(len(info))
    
    print('name' in info)
    print('egon' in info)
    
    #4、删除
    info={'name':'egon','age':18,'sex':'male'}
    
    print(info.pop('name'))
    
    print(info)
    #删除后键值一起删除,pop删除可以获取删除的值
    egon
    {'age': 18, 'sex': 'male'}
    
    #5、键keys(),值values(),键值对items()
    info={'name':'egon','age':18,'sex':'male'}
    
    print(list(info.items())[0])
    ('name', 'egon')
    
    #6、循环
    
    ======================
    集合:集合是为了处理两个集合之间的关系,单纯取出单个值无意义. 集合无序的,集合是不能重复的可以充当去重功能.
    交集并集合集
    
    用:去重,关系运算,
    
    #定义:
                知识点回顾
                可变类型是不可hash类型
                不可变类型是可hash类型
    
    #定义集合:
                集合:可以包含多个元素,用逗号分割,
                集合的元素遵循三个原则:
                 1:每个元素必须是不可变类型(可hash,可作为字典的key)
                 2:没有重复的元素
                 3:无序
    
    注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
     
    
    #优先掌握的操作:
    #1、长度len
    #2、成员运算in和not in
    
    #3、|合集
    #4、&交集
    #5、-差集
    #6、^对称差集
    #7、==
    #8、父集:>,>= 
    #9、子集:<,<=    
    
    
    
  • 相关阅读:
    【算法18】重排数组元素使得所有的奇数位于所有偶数之前
    php函数ob_start()、ob_end_clean()、ob_get_contents()
    php代码调试
    判断文件存在是用file_exists 还是 is_file
    ubuntu屏幕截图工具:scrot,可截鼠标拖曳的矩形区域图形
    mysql常用的技巧
    用户角色权限设计
    解决ubuntu耳机和音箱同时发音
    SSH免密码登录
    IE, Firefox下,checkbox的钩钩一旦勾上,画面再刷新,钩钩还是勾上的解决方案
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/8010504.html
Copyright © 2011-2022 走看看