Python之文件编码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33248299/article/details/82845964

一.文本文件编码格式

  • 文本文件存储的内容是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等
    Python 2.x默认使用ASCII编码
    Python 3.x默认使用UTF-8编码

1.ASCII编码

  • 计算机中只有256个ASCII字符
  • 一个ASCII在内存中占用1个字节的空间
  • 8个0/1排列组合方式一共有256种,也就是2**8

2.UTF-8编码格式

  • 计算机中使用1-6字节来表示一个UTF-8字符,涵盖了地球上几乎所有地区的文字
  • 大多数汉字会使用3个字节表示
  • UTF-8是UNICODE编码的一种编码格式
  • 如果你要读取的文本文件不是UNICODE编码的,那么就要这样操作了
f=open('文件路径','rb')
f_read=f.read()
f_read_decode=f_read.decode('该文件的编码方式')
print(f_read_decode)

二.Python 2.x中如何使用中文

在Python 2.x文件的第一行增加以下代码,解释器会以UTF-8编码来处理python文件

# *-* coding:utf-8 *-*

也可以使用

# coding=utf-8

三.Python 2.x处理字符串

  • Unicode字符串
  • 在Python 2.x 中,即使指定了文件使用UTF-8的编码格式,但是在遍历字符串时,仍然会以字节为单位遍历字符串
  • 要能够正确的遍历字符串,在定义字符串时,需要在字符串的引号前,增加一个小写字母u,告诉解释器这是一个unicode字符串(使用UTF-8编码格式的字符串)

四.eval函数

  • eval()函数十分强大–将字符串当成有效的表达式来求值并返回计算结果
#基本数学计算
input_str = input("请输入算术题:")
print(eval(input_str))
#字符串重复
print(eval("'*'*10"))
#将字符串转换成列表
print(type(eval("[1,2,3,4,5]")))
#将字符串转换成字典
print(type(eval("{'name':'小明','age':18}")))
/*
请输入算术题:1+1
2
**********
<class 'list'>
<class 'dict'>
*/

  • 不要滥用eval
  • 在开发时千万不要使用eval直接转换input的结果
__import__('os').system('ls')
  • 等价代码
import os 
os.system("终端命令")
  • 执行成功,返回0
  • 执行失败,返回错误信息

猜你喜欢

转载自blog.csdn.net/qq_33248299/article/details/82845964