zoukankan      html  css  js  c++  java
  • 5-day5-字符编码-函数-文件操作

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # __author__ = "w.z"
    # Date: 2017/6/9
    
    # review-list
    # list 删除
    # pop
    l = [1, 2, 3, [3, 4]]
    print(l[3])
    l[3].pop(0)
    print(l)
    
    # del
    l = [1, 2, 3, [3, 4]]
    del l[3][1]
    print(l)
    
    # remove 指定元素的值,对元素进行删除
    l = [1, 2, 3, [3, 4]]
    print(l[3].remove(4))
    print(l)
    
    # 字符串多重赋值
    a, b, c, d, e = 'hello'
    print(a, e)
    a, *_, e = 'hello'
    print(a, e)
    
    
    # 1. 字典通过key取value的方法
    
    # 字典打印 keys ,打印出来类型是dict_keys ,可通过list函数转化为列表(list)类型,或者通过 for ... in ... 打印
    dict1 = {'name': 'lisan', 'class': '5', 'room':'room32'}
    print(list(dict1.keys()))
    print(type(dict1.keys()))
    
    for i in dict1.keys():
        print(i)
    
    # 打印 字典的 values, dict1.values的类型是dict_keys ,可通过list()函数转化
    dict1 = {'name': 'lisan', 'class': '5', 'room':'room32'}
    print(dict1.values())
    print(list(dict1.values()))
    print(list(dict1.values())[1])
    
    # {}.get('key')  {}['key']
    # {}.get('a','cant find')  //key不存在,返回null,返回 str
    dd = {'a': '1', 'b': '2'}
    print(dd['a'])
    print(dd.get('bb', 'the key do not exits'))           # 此处的返回值,只有在取不到的时候才能返回
    
    # 2.打印字典的key value
    # for i in dd :打印出来的是key的值
    dd = {'a': '1', 'b': '2'}  # 打印key
    for i in dd:
        print(i)
    
    # items()
    # for i in  dict1.items(): 类型为dict.items
    dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
    print(dict1.items())     # dict_items([('name', 'lisan'), ('class', '5'), ('room', 'room32')])
    print(type(dict1.items()))
    for dd in dict1.items():
        print(dd)
        print(type(dd))  # ddd ('key','value')  打印key-value组成的元组
    
    for k, v in dict1.items():
        print(k, v)      # 通过 k,v 两个变量打印元组里的两个值
    
    # print(dd.popitem()) 随机删除字典元素,其实是删除最后一位
    dict3 = {'ads': '1', 'store': '2', 'epd': '3'}
    print(dict3.popitem())
    print(dict3)
    
    # 3 . 字典的赋值
    dd1 = dict({'a': '1', 'b': '2'})
    print(dd1)
    
    d3 = dict(name='zhangwei', age=18)
    print(d3)
    
    a1 = {}
    a2 = dict()
    print(a1, a2)
    
    a5 = dict([('b', 1), ('c', 2), ('d', 3)])  # dict可以把列表里面的元组队,转化为字典,合理
    print(a5)
    
    dd6 = {}.fromkeys(['name', 'age'], ['1'])
    dd7 = {}.fromkeys(['name', 'age'], ['egon', '18'])  # key value 值是一样的
    print(dd7)
    print(dd6)
    
    # 4.字典的删除操作: pop() popitem()
    dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
    print(dict1.pop('room3', 'bu cun zai '))
    
    dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
    print(dict1.popitem())
    print(dict1)
    
    # 5. setdefault 存在key 则返回values,不存在key,则把key-value值加上去
    dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
    print(dict1.setdefault('name2', 'dasdsa'))
    print(dict1)
    
    # 6.update()  把dict5 里没有的键值对
    dict5 = {'name': 'alex', 'class': 'six'}
    dict6 = {'name': 'alex', 'socre':'99'}
    dict5.update(dict6)
    print(dict5)
    
    
    
    
    # 集合
    # dict 逻辑操作
    # c1.update(c2)    ## 把c2的值给c1 ,key一样覆盖,key不一样,增加
    
    # set 对集合进行排重
    set1 ={'a', 's', 'd', 's', 'f', 'a'}
    print(set(set1))
    
    names = ['egon', 'alex', 'tim', 'ben']
    print(set(names))
    print(list(set(names)))
    
    # 数据类型自带bool值 ,空或者不为空
    l = ['1']
    if not l:
        print('空')
    else:
        print('不空')
    
    
    # 集合 :
    
    # 集合内元素必须是唯一的
    # 集合内的元素必须是可hash的,也就是不变类型,比如,不能是列表
    set3 = {'egon', 'alex', 'tim', 'ben'}
    set4 = {'alex', 'xiaoxue', 'songjia'}
    print(set3)
    print(set3 & set4)        # 取交集
    print(set3 | set4)        # 取合集
    print(set3 - set4)        # 取差集
    
    # 集合方法
    # difference() 取差集
    set3 = {'egon', 'alex', 'tim', 'ben'}
    set4 = {'alex', 'xiaoxue', 'songjia'}
    print(set3.difference(set4))
    
    # difference_update()  取差集,并且更新集合
    set3 = {'egon', 'alex', 'tim', 'ben'}
    set4 = {'alex', 'xiaoxue', 'songjia'}
    print(set3.difference_update(set4))
    print(set3)
    
    # 交集 并集 差集
    set3 = {'egon', 'alex', 'tim', 'ben'}
    set4 = {'alex', 'xiaoxue', 'songjia'}
    
    print(set3 & set4)  # 同时报名set3 和set4 的同学
    print(set3.intersection(set4))
    
    print(set3 | set4)   # 报名的所有同学
    print(set3.union(set4))
    
    print(set3 - set4)    # 只报名set3的同学
    print(set3.difference(set4))
    
    print(set4 - set3)    # 只报名set4的同学
    print(set4.difference(set3))
    
    
    # is disjoint 没有交集,返回True
    s1 = {1, 2, 'q'}
    s2 = {1, 2, 3,}
    s3 = {1, 2}
    s4 = {'a', 'b'}
    print(s1.isdisjoint(s2))
    print(s3.issubset(s2))
    s3.update(s4)
    print(s3)
    
    #
    s1 = {'a', 1}
    s1.add(2)
    s1.discard(1)
    s1.remove('a')
    s1.pop()
    print(s1)
    
    names = ['egon', 'alex', 'tim', 'aterm']
    print(list(set(names)))





    #文件操作

    file1 = open('a','w')
    file1.write('dasdsa')
    file1.write(' ok')
    file1.close()

    #rb 模式
    f= open('a', rb)
    print(f.read())
    print(f.read().decode(utf-8))

    # a 模式。文件不存在创建,文件存在打开,追加
    file2 = open('a','a',encoding='utf-8')
    file2.close

    # file3 = open('a','r',encoding='utf-8')
    f.write('dasdas')
    f.flush() #把内存数据刷新到硬盘
    file2.close()
    print(file2.close()) #判断文件是否关闭
    file2.readlines()
    file2.readable()


    #文件内移动光标

    #seek
    file4 = open('a','r',encode='utf-8')
    print('first-read', f.read())
    f.seek(0)
    print('secnd', f.read())
    f.seek(3) #移动2个字节 utf-8 三个字节
    print(f.tell()) #当前光标的位置
    f.seek(3,0)# 0 文件开头 1 当前位置 2 末尾。

    #seek 1 模式,必须rb,因为以字节方式打开
    file5 = open('a','r',encode='utf-8')

    #截断 truncate()
    file5 = open('a','r',encode='utf-8')
    f.truncate(3) #只保留前三个字节


    #上下文管理
    with open('a', 'w') as open_file ,:






    # 函数

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # __author__ = "Q1mi"
    # Date: 2017/6/12

    # 1、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作

    import os


    def modify(x, y, z):
    file1 = open(x, 'r')
    file2 = open('b.txt', 'w')
    for line1 in file1:
    if y in line1:
    line1 = line1.replace(y, z)
    file2.write(line1)
    file1.close()
    file2.close()
    os.remove(x)
    os.rename('b.txt', x)

    # modify('a', 'ALEX', 'alexsb')
    modify('a', 'alexsb', 'ALEX')

    # 2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数


    def classify(x):
    classify_num = 0
    classify_abc = 0
    classify_space = 0
    classify_oth = 0
    for i in x:
    if i.isdigit() is True:
    classify_num += 1
    elif i.isspace() is True:
    classify_space += 1
    elif i.isalpha() is True:
    classify_abc += 1
    else:
    classify_oth += 1
    print('num %s, abc %s, space %s, other %s' % (classify_num, classify_abc, classify_space, classify_oth))

    classify('avc 132 $$$')

    # 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。


    def judge_len(x):
    if len(x) > 5:
    print('大于')
    else:
    print('不大于')

    judge_len(['a', 'b', 'c', 'd', 'e', 'f'])
    judge_len('abc')
    judge_len(('abc', 'dasdas', 'ewq', 1, 312312, 'dasda'))


    # 4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

    def check_space(x):
    for i in x:
    for j in i:
    if j.isspace() is True:
    print('there is space in ', x)
    break
    check_space('dasdas dasdas')
    check_space('dasadsad')
    check_space(['ads', 'dadad ddd', 'dasda', ' '])
    check_space(['ads', 'dadadddd', 'dasda', ' '])
    check_space(['ads', 'dadadddd', 'dasda'])
    # isspace 不能判断数字

    # 5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。


    def return_f2(x):
    if len(x) > 2:
    return x[0:2]
    else:
    print('长度小于2 ')
    r = return_f2(['a', 'ad', 'ads', 'ads2'])
    print(r)

    # 6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

    new_list = []


    def return_ji(x):
    for i in range(0, len(x)):
    if i % 2 == 0:
    new_list.append(x[i])
    return new_list

    xx = return_ji(['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'])
    print(xx)

    # 7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
    # dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    # PS:字典中的value只能是字符串或列表


    def check_lendic(xx):
    for i in xx.keys():
    if len(xx[i]) > 2:
    xx[i] = xx[i][0:2]
    return xx
    cc = check_lendic({"k1": "v1v1", "k2": [11, 22, 33, 44]})
    print(cc)





      

  • 相关阅读:
    python操作Redis详解
    python操作SQLAlchemy
    设计模式详解及Python实现
    计算机基础
    DRF内置过滤组件与排序组件结合使用
    LTE
    LTE
    LTE
    LTE
    LTE
  • 原文地址:https://www.cnblogs.com/cx2c/p/7050123.html
Copyright © 2011-2022 走看看