python-字符编码and文件操作

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了python-字符编码and文件操作脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

目录
    @H_406_6@字符编码
    • 字符编码简介
    • 字符串编码发展
      • 1.、ASCII码
        • 字符对应关系
      • 2、汉字编码 ——GBK
      • 3、日文编码 ——Shift_JIS
      • 4、韩文编码 ——EUC-KR
      • 5、万国码 ——Unicode
        • Unicode简介:
        • UTF-8
    • 字符编码实操
      • 代码演练
  • 文件操作
    • 什么是文件?
    • 操作文件的方法:
    • 路径:
    • 如何取消特殊字符的功能:
    • 对文件的操作有:读和写
    • wITh上下文管理

python-字符编码and文件操作

字符编码

字符编码简介

由于计算机内部只识别二进制,但是用户(全球人类)在使用计算机的时候可以看到各式各样的语言,所以这中间必须对不同语言进行‘翻译’,计算机才能识别,这个翻译的标准就是字符编码表,数字和字符一一对应。

‘翻译’过程

  • 用户 → 计算机 → 用户

      **字符 → 数字 (01二进制)→ 字符**
    

字符串编码发展史

👉[ASCII](ASCII_百度百科 (baidu.COM)

1.、ASCII码

计算机最初是由美国人发明的,美国人为了能狗让计算机识别英文字符,发明了ASCII码,里面记录了英文与数字对应关系。如下图:

python-字符编码and文件操作

  • 所由英文字符和符号加起来不超过127个
  • 使用八位表示是为了后续发现新的语言

字符对应关系

  • A-Z:65-90

  • a-z:97-122

在Python中,用Ord()方法查看字符对应的数字(十进制)

python-字符编码and文件操作

2、汉字编码 ——GBK

为了让计算机能够识别中文,发明了另外一套编码,GBK

GBK编码表记录了中文英文与数字的对应关系。

  • GBK对于英文使用一个字节
  • GBK对于中文使用两个甚至更多字节

注·比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号,所以两个字节其实也不够表示出所有的中文,遇到生僻字可能需要更多位来表示。

3、日文编码 ——Shift_JIS

为了让计算机能够识别日文,也需要发明一套编码表,

Shift_JIS编码表记录了日文英文与数字的对应关系。

4、韩文编码 ——EUC-KR

为了能够让计算机识别韩文,需要发明一套编码表,

EUC_KR编码表记录了韩文英文与数字的对应关系。

5、万国码 ——Unicode

Unicode简介:

Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0X10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案,统一使用两个及以上字符记录字符与数字的对应关系。

UTF-8

UTF-8为万国码的优化版本,将英文用一个字节存储,将中文用三个字节或更多版本存储。我们默认使用的编码为UTF-8。

字符编码实操

1、如何解决乱码的情况

#文件当初以什么标准编码,打开的时候就以什么标准解码

2、python解释器版本不同带来的编码差异

  • 由于python2.X比Unicode发明早,所以内部默认使用ASCII

python-字符编码and文件操作

3、在使用python2.x编程时,必须加上文件头。如果定义字符串需要在字符串前加一个小u。

python-字符编码and文件操作

4、python3.x内部使用的是utf-8

5、在Pycharm中如何定义文件头模板(python2版本可用)

python-字符编码and文件操作


python-字符编码and文件操作

步骤:file>>settings>>Editor>>file and code templates >>python script

代码演练

  • 编码与解码的过程
  • encode-编码:将人类能够读懂的字符转换成数字
  • decode-解码:将数字转换成人类能够读懂的字符

实例如下:

s = '我要坚持学python!'
#编码
res = s.encode('utf8')
PRint(res,tyPE(res))
#解码
res1 = res.decode('utf8')
print(res1,type(res1))

#结果
b'xe6x88x91xe8xa6x81xe5x9dx9axe6x8cx81xe5xadxa6pythonxefxbcx81' <class 'bytes'>
我要坚持学python! <class 'str'>

文件操作

什么是文件?

  • 文件是操作系统暴露给用户操作硬盘的‘接口’。

操作文件的方法:

  • 打开文件:open()
  • 关闭文件:close()

路径:

  • 绝对路径
  • 相对路径

如何取消特殊字符的功能:

  • 在路径前加‘r’
  • 在前再加一个

对文件的操作有:读和写

  • r:路径存在只读模式不能修改,路径不存在直接报错
  • w:路径存在每打开一次都会清除文件内的内容,路径不存在自动创建
  • a:路径存在会将文件指针直接移动到文件末尾,在文件不存在时会创建空文档

实例如下:

# 1.以只读,utf8编码模式打开当前路径下的a.txt文件
#首先在当前路径创建a.txt文件
res = open('a.txt',mode='r',encoding='utf8')
# 查看内容
print(res.read())
# 对文件操作完必须关掉,释放资
res.close()

res1 = open(r'E:python itemOld_BoyClass_seconda.txt',mode='r',encoding='utf8')
# 绝对路径前加r,取消a原有的功能
print(res1.read())
# 对文件操作完必须关掉,释放资源
res1.close()

#结果,上下两种操作结果一样
我要坚持学python!
我要坚持学python!


#2. 以写,utf8编码模式打开当前路径下的a.txt文件
res = open('a.txt', mode='w', encoding='utf8')
# 输入hello内容,清除了以前的我要坚持学python!
res.write('hello')
# 对文件操作完必须关掉,释放资源
res.close()
#结果,在a.txt文件中存入
hello

#3. 以追加内容,写功能,utf8编码模式打开当前路径下的a.txt文件
res = open('a.txt', mode='a', encoding='utf8')
# 输入hello内容,清除了以前的我要坚持学python!
res.write(' worldn')
res.write('pythonn')
# 对文件操作完必须关掉,释放资源
res.close()

#结果,在a.txt文件中追加world和python字符
 world
python

with上下文管理

解决了总是忘记关闭文件的问题,用with关键字执行完代码后会自动关闭文件,释放资源

  • with语法格式:

​ with open(‘文件名’,’r/w’) as f:

​ f.读操作/f.写操作

  • with还可以同时打开多个文件:

    with open(‘文件名1’,’r/w’) as F1, open(‘文件名2’) as f2:

    ​ pass

实例如下:

# with关键字上下文管理
# 打开一个不存在的文件,相当于创建
with open('b.txt', mode='w') as f1:
    f1.write('hello world!')

# 打开多个文件,相当于创建
with open('c.txt',mode='w') as f2,open('d.txt',mode='w') as f3:
    #分别在c.txt文件和d.txt文件中存入Hammer和python
    f2.write("Hammer")
    f3.write('python')

    #结果
    hello world!
    Hammer
    python

python-字符编码and文件操作

支持转载标明出处,持续更新中~~~


字符编码,文件操作有这一篇get了!

脚本宝典总结

以上是脚本宝典为你收集整理的python-字符编码and文件操作全部内容,希望文章能够帮你解决python-字符编码and文件操作所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。