zoukankan      html  css  js  c++  java
  • 字符编码、文件操作

    一、字符编码

    1、人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,

    一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系)。对应关系形成的结构称之为:编码表


    2、编码表的发展史

    1.ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系

    二进制:11111111 => 255 => 1bytes(1字节) => 8个二进制位

    2.中国:研究汉字与计算机01标识符的对应关系:gb2312 => GBK(***) => GB18030

    日本:Shift_JIS

    棒子:Euc-kr

    等等。。。。。

    3. 制造一个可以完成万国字符与计算机01标识符的对应关系的编码表

    编码表:unicode表

    py2:ascii,没有按万国编码,原因py2诞生先于万国编码
    py3: utf-8, 采用万国编码来解释文本内容


    3.1 unicode与utf-8什么关系

    unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据。

    总结:变长优点:(大量数据都是以英文存在,所以utf-8空间更小)传输速度更快

    unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高

    utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低

    内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据
    二、字符串类型

    1.1 unicode字符串,默认字符串

    # s1 = u'abc你好 不好'

    1.2 字节字符串

    # s2 = b'abc123xb7xb7'

    1.3 原义字符串: 不对字符串内存做任何操作(eg: 的转化)

    # s3 = r'abc你好 不好'


    2.1 编码与解码

    # s = '123呵呵'
    # n_b = bytes(s, encoding='utf-8')


    # b = b'123xe5x91xb5xe5x91xb5'
    # n_s = str(b, encoding='GBK')


    总结:将u字符串编码成b字符串

    print(u'你好'.encode('utf-8'))

    将b字符串解码成u字符串

    print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8'))

    三、文件操作

    1.1 文件:硬盘中一块存储空间(虚拟的文件)

    1.2 文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write

    2、使用文件的三步骤

    2.1使用文件的三步骤

    打开文件

    # 变量名 = 文件空间
    # 文件路径 操作模式(读|写) 编码
    f = open('a.txt', 'r', encoding='utf-8')

    操作文件

    # data = f.read(3) # 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据
    # print(data)

    # 一次读取一行
    # line = f.readline()
    # print(line)
    # line = f.readline()
    # print(line)

    # 按行一次性全部读出
    # lines = f.readlines()
    # print(lines)

    # 逐步一行一行读取
    # l = []
    # for line in f:
    # print(line)
    #l.append(line)
    # print(l)

    #s = set()
    #for line in f:
    # s.add(line)
    #print(s)


    关闭文件

    f.close() # 释放操作系统对文件的持有,变量f还被应用程序持有

    # del f # 系统自动回收
    print(f)


    3、操作模式

    主模式:r:读 | w:写 | a:追加

    从模式:b:按字节操作 | t:按字符操作 | +:可读可写

    x:异常写 | U:被遗弃了

    3.1 基础写

    # 文件不存在:会新建文件,再操作文件
    # 文件存在:先清空文件,再操作文件

    w = open('b.txt', 'w', encoding='utf-8')

    w.write('456')

    w.close()

    print('end')

  • 相关阅读:
    rabbitmq无用使用guest用户远程连接
    SpringMVC 过滤器
    Spring MVC的Controller统一异常处理:HandlerExceptionResolver
    springMVC之mvc:interceptors拦截器的用法
    spring中排除某个类
    mysql中的CURRENT_TIMESTAMP
    [QT]Qt+VS2012+Win8 64Bit安装
    UOJ#55. 【WC2014】紫荆花之恋
    CodeChef SADPAIRS:Chef and Sad Pairs
    BZOJ4771: 七彩树
  • 原文地址:https://www.cnblogs.com/yuanlianghong/p/10600264.html
Copyright © 2011-2022 走看看