本节主要记录集合文件以及字符编码块。


  • 集合

    • 去重
    • 关系测试
  • 文件
    • 文件的基本操作
  • 字符编码
  • 附录
    • iron

集合

如果一个元素同时存在多个列表中,集合可以很方便的去重关系测试

去重

列表list中存在重复元素,可以将其转换成集合:

list = [1,5,9,6,5,7,5,4]
list = set(list)
print(list, type(list))>>{1,4,5,6,7,9} class<'set'> #变成大括号,像字典但不是(集合是无序的)

关系测试

  • 两个集合交集、并集、差集、子集和反向差集
list1 = set([1,5,9,6,5,7,5,4])
list2 = set([2,4,5,7,2,0,11,16])
print(list1.intersection(list2))    #交集
>>{4,5,7}print(list1.union(list2))           #并集
>>{0,1,2,4,5,6,7,9,11,16}        print(list1.difference(list2))         #差集    (我这有,你那没有)
>>{1,6,9}             list1中有,list2中没有的list3 = set([1,5,9])
print(lsit3.issubset(list1))           #子集
>>Trueprint(list1.insuperset(list3))      #父集
>>Trueprint(list1.symmetric_difference(list2))    #反向差集
>>{0,1,2,6,9.11.16}
#即:去掉都有的(取出两个互相没有的合在一起)lsit4 = set([4,6,8])
print(list3.isdisjoint(list4))     #检测是否有重,没有为真
>>True

还有更为简单的编写方式:

#交集
print(list1 & list2)#并集
print(list2 | list1)#差集
print(list1 - list2)    #在1中不在2中#对称差集
print(list1 ^ list2)
  • 集合的 增、删、改、查
#增
list.add()        #增加一项
list.update([10,66,89])#删
list.pop()        #随机删
list.remove(10)
list.discard(10)      #当删除元素不存在时,remove报错,discard不报错#查

文件

对文件操作流程:
- 1、打开文件,得到文件句柄并复制给一个变量
- 2、通过句柄对文件进行操作
- 3、关闭文件

文件的基本操作

首先创建一个名为iron的文本

注意事项:
- 文件句柄:存放了文件的字符集、大小以及在硬盘上的起始位置。
- 文件打开时都要说明是读(”r”)还是写(”w”)或者是追加(”a”)
- 写模式将创建一个新的文件,会覆盖已有的文件,需特别注意!!

  • 读、写、追加
#读
f = open("iron","r",encoding = "utf-8")     #文件句柄
data = f.read()
data2 = f.read()      #data2取不到值,因为前面操作已经将光标走至末尾了
print(data)#写
f = open("iron2","w",encoding = "utf-8")
f.write("面朝大海\n")
f.write("春暖花开\n")#追加
f = open("iron2","a",encoding = "utf-8")
f.write("我有一所房子\n")f.close()
  • 想实现逐行读取内容,或者读到某一行做个记号
f.open("iron2","r",encoding = "utf-8")
print(f.readline())       #读一行
print(f.readlines())     #读取所有的内容,换行输出为\nfor line in f.readlines():print(line.strip())        #strip 去掉所有的换行#使用读取单行来获得整个内容
f = open("iron","r",encoding = "utf-8")
count = 0
for line in f:if count == 9:print("\t----------下面是第十行---------")count += 1continueprint(line)count += 1#在第十行插入分割行
  • 读取文件后,将光标移回去
f = open("iron","r",encoding = "utf-8")
print(f.tell())             #从文件句柄处,指针所在的位置
print(f.read(5))
print(f.tell())>> 0
>> 《刺客信条
>> 15                    读了5个位,每个占3字节f.seek(0)       #回到开头
  • 进度条
import sys,timefor i in range(20)sys.stdout.write("#")sys.stdout.flush()    #没有此句则将在内存里逐个刷新,然后统一显示time.sleep(0.2)      #0.2s显示一个
  • 修改
#读写      r+  —— 先读,再写f = open("iron","r+","utf-8")         print(f.readline())
print(f.tell())                 #显示当前光标所在位置f.write("----------------")>> 《刺客信条:启示录》
>> 32           #第一行到30,第二行开头有两个空格,所以32#写读      w+         先写(创建新文件)再读f = open("iron","w+",encoding="utf-8")#修改内容
f = open("iron","r",encoding="utf-8")
f_new = open("iron2","w",encoding="utf-8")
for line in f:if "独行刺客" in line:line = line.replace("独行刺客","黑夜杀手")   f_new.write(line)     #独行刺客替换为黑夜杀手,继续写入新文件中
f.close()
f_new.close()
  • 以其他类型打开
#以二进制--读       rb      (网络传输必须用二进制模式)f = open("iron","rb")        #不用指定编码格式了(二进制嘛)
print(f.readline())>>b'\xe3\x80\x8a\xe5\x88\xba\xe5\xae\xa2\xe4\xbf\xa1\xe6\x9d\xa1\xef\xbc\x9a\xe5\x90\xaf\xe7\xa4\xba\xe5\xbd\x95\xe3\x80\x8b\r\n'
>开头b表示是bytes类型#以二进制--写      wb
f = open("iron","wb")
f.write("hello\n".encode())      #不填默认utf-8
f.close()>>Hello

自动关闭文件,防止忘记关闭占用内存:

#使用with语句with open("iron","r",encoding="utf-8") as f ,\open("iron2","r",encoding="utf-8") as f2:for line in f:print(line)
#同时打开多个文件  ,\   单行不能太长

字符编码

不同编码之间相互转换,可以以Unicode为中间量
x → Unicode → y
decode → Unicode → encode

#-*- coding:gbk -*-      首先声明程序该文件使用gbk编码(只是文件)import sys
print(sys.getfilesystemencoding())
>> utf-8                        s = "你好"          #这个是个unicode编码(python默认unicode编码)print(s)
print(s.encode("gbk"))     #encode成gbk编码
print(s.encode("utf-8"))        #encode成utf-8编码
print(s.encode("utf-8".decode("utf-8".encode("gb2312")))
#先转成utf-8编码,然后decode(写当前编码类型),然后在转成gb2312

decode 不用指明类型,因为 decode 是转成 unicode 类型

附录

iron

《刺客信条:启示录》Deep in the ocean, dead and cast away.深海之处,一片死寂。Where innocence's burn in flames.无辜生命,烈焰吞噬。A million mile from home, I'm walking ahead.背井离乡,渐行渐远。I'm frozen to the bones, I am...彻骨寒冷,我是……A soldier on my own, I don't know the way.独行刺客,行无目的。I'm riding up the heights of shame.独步飞乘,耻辱之巅。I'm waiting for the call, the hand on the chest.诚待召唤,胸前执手。I'm ready for the fight, and fate....准备一战,命运……The sound of iron shocks is stuck in my head.金戈声声,冲击脑海。The thunder of the drums dictates.战鼓阵阵,指引心路。The rhythm of the falls, the number of dead's.山倒之律,死尸一片。The rising of the horns, ahead....号角之音,前方……From the dawn of time to the end of days.亡灵序曲,末世浩劫。I will have to run away,身不由己,奔走江湖。I want to feel the pain and the bitter taste.心经痛彻,体悟苦涩。Of the blood on my lips, again....嘴角鲜血,再次……This deadly burst of snow is burning my hands.雪烈肃杀,烧红吾手。I'm frozen to the bones, I am...彻骨寒冷,而我……A million mile from home, I'm walking away.背井离乡,默默离开。I can't remind your eyes, your face.我已遗忘,你的双眼,你的脸庞

Python笔记(三):集合、文件、字符编码相关推荐

  1. c语言字符串用for语句去重,python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for...

    也愿大家永葆初心-- 已识乾坤大,犹怜草木青. 一.python简介 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算 ...

  2. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误. 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法. 看 ...

  3. Python中的字符串与字符编码:编码和转换问题

    原文转载自:http://www.cnblogs.com/yyds/p/6171340.html 读后感:最近在跑实验,对于中文编码问题一直感到困扰,读完这篇文章以后,了解了Unicode编码的一些信 ...

  4. 字符编码在python中的处理_python 字符编码处理问题总结

    Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in posit ...

  5. Python 笔记(三) 采取某音视频

    Python 笔记(三) 采取某音视频 # -*- coding: utf-8 -*- import csv import re from time import timeimport parsel ...

  6. python慕课笔记_MOOC python笔记(三) 序列容器:字符串、列表、元组

    Python Python开发 Python语言 MOOC python笔记(三) 序列容器:字符串.列表.元组 容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器 ...

  7. 第三篇:字符编码、数据类型

    #第三篇:字符编码.数据类型 ##3.1字符编码介绍 一.什么是字符编码 计算机要想工作必须通电,即用'电'驱使计算机干活,也就是说'电'的特性决定了计算机的特性.电的特性即高低电平(人类从逻辑上将二 ...

  8. 第三天:字符编码和文件处理

    字符编码 什么是字符编码 字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式.自然数序列.8位组或者电脉冲),以便文本在计算机 ...

  9. python 循环写文件_循环-读写文件-字符编码

    目录: 1.1 while与for循环 1.赋值魔法 #1. 序列解包: 将多个值的序列解开,然后放到序列的变量中. x,y,z = 1,2,3 print(x,y,z) #the result : ...

  10. python定义二进制变量_Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序...

    第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print("Hello ...

最新文章

  1. 连接此产品到计算机并打开此产品电源,n6705c 直流电源分析仪.pdf
  2. MapReduce编程系列 — 2:计算平均分
  3. 解决阿里云postfix无法发送邮件问题
  4. 加载不同linux内核,Linux内核加载过程
  5. 用Yum安装最新的MySQL版本
  6. toolbox、library 的组织
  7. IPV6 Socket编程
  8. 禁用 Bootstrap 模态框(Modal) 点击空白时自动关闭
  9. webots自学笔记(七)通过定义顶点构件3D形状(IndexedFaceSet节点)
  10. 20.docker events
  11. 创建jenkins任务
  12. Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别
  13. 中国古代诗词文本挖掘项目
  14. JavaScript的20个工具函数助力H5高效开发
  15. 知我者谓我心忧,不知者谓我何求!
  16. 关于获取安卓手机MAC地址的问题
  17. TI BSL in python
  18. 解决Ubuntu DVD 用wubi 安装时候要重新下载镜像的笨方法
  19. matlab函数equalize
  20. win10电脑找不到WLAN的解决方法(不显示附近wifi)

热门文章

  1. npm i 安装时报错问题解决
  2. 【题解】PAT (Basic Level) Practice (中文)
  3. 政策解读 | 传言PayPal要封杀独立站卖家?绝对不可能!
  4. java键盘录的使用方法
  5. Axure 如何在页面加载时,设置文本框的内容为当前日期
  6. ArcGIS Pro简介
  7. java 男女 相邻交换 队形_调整队形+上机编程调整男孩女孩顺序
  8. 3D建模软件功能解析之Maya篇
  9. 几个招聘网站,智联的最垃圾
  10. 自定义8583模板,打包解包,使用j8583包