文件的读写操作默认使用系统编码,可以通过调用sys.getdefaultencoding() 来得到。在大多数机器上面都是utf-8 编码。如果你已经知道你要读写的文本是其他编码方式,那么可以通过传递一个可选的encoding 参数给open() 函数。如下所示:

with open('somefile.txt', 'rt', encoding='latin-1') as f:

...

Python 支持非常多的文本编码。几个常见的编码是ascii, latin-1, utf-8 和utf-16。在web 应用程序中通常都使用的是UTF-8。ascii 对应从U+0000 到U+007F 范围内的7 位字符。latin-1 是字节0-255 到U+0000 至U+00FF 范围内Unicode 字符的直接映射。当读取一个未知编码的文本时使用latin-1 编码永远不会产生解码错误。使用latin-1 编码读取一个文件的时候也许不能产生完全正确的文本解码数据,但是它也能从中提取出足够多的有用数据。同时,如果你之后将数据回写回去,原先的数据还是会保留的。

是文本文件中可能出现的编码错误。但你读取或者写入一个文本文件时,你可能会遇到一个编码或者解码错误

>>> f = open('sample.txt', 'rt', encoding='ascii')

>>> f.read()

Traceback (most recent call last):

File "", line 1, in

File "/usr/local/lib/python3.3/encodings/ascii.py", line 26, in decode

return codecs.ascii_decode(input, self.errors)[0]

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position

12: ordinal

如果出现这个错误,通常表示你读取文本时指定的编码不正确。你最好仔细阅读说明并确认你的文件编码是正确的(比如使用UTF-8 而不是Latin-1 编码或其他)。如果编码错误还是存在的话,你可以给open() 函数传递一个可选的errors 参数来处理这些错误。下面是一些处理常见错误的方法:

>>> f = open('sample.txt', 'rt', encoding='ascii', errors='replace')

>>> f.read()

'Spicy Jalape?o!'

>>> # Ignore bad chars entirely

>>> g = open('sample.txt', 'rt', encoding='ascii', errors='ignore')

>>> g.read()

'Spicy Jalapeo!'

>>>

如果你经常使用errors 参数来处理编码错误,可能会让你的生活变得很糟糕。对于文本处理的首要原则是确保你总是使用的是正确编码。当模棱两可的时候,就使用默认的设置(通常都是UTF-8)。

Python遇到字符编码出问题的一个相对万能的办法

在使用Python做爬虫的过程中,经常遇到字符编码出问题的情况. UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' ...

关于ng路由的传参问题(传递一个,多个参数)

在ng的页面条转传参数的方法,ui-sref,$state Ui-sref:用于html页面进行单页面的跳转 $state:用于js代码中跳转 重点:明确传递方,接受方 [传递单个参数] 对于传递方: ...

Python之路-python(set集合、文本操作、字符编码 )

一.集合操作(set)                                                                                          ...

python高级(四)—— 文本和字节序列(编码问题)

本文主要内容 字符 字节 结构体和内存视图 字符和字节之间的转换——编解码器 BOM鬼符  标准化Unicode字符串 Unicode文本排序 python高级——目录 文中代码均放在github上: ...

《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换

文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将 ...

python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。

python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名. 使用for循环即可实现: for name in range(1,11): desktop_path='C: ...

python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

python进程中的实例和json格式的字符串之间的映射关系是非常直接的,相当于同一个概念被编码成不同的表示: stream in json form ----json.loads(str)----- ...

python中的编码与解码

编码与解码 首先,明确一点,计算机中存储的信息都是二进制的   编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显 ...

Python之字符编码与文件操作

目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...

随机推荐

spring MVC的困惑--url-pattern的/和/*有区别

总是现象就是:spring用到forward("/WEB-INF/jsp/*.jsp")而forward当然是又要经过web.xml的映射的,然后,在URL匹配时,

[CF733D]Kostya the Sculptor(贪心)

题目链接:http://codeforces.com/contest/733/problem/D 题意:给n个长方体,允许最多两个拼在一起,拼接的面必须长宽相等.问想获得最大的内切圆的长方体序号是多少 ...

Codeforces 553D Nudist Beach(图论,贪心)

Solution: 假设已经选了所有的点. 如果从中删掉一个点,那么其它所有点的分值只可能减少或者不变. 如果要使若干步删除后最小的分值变大,那么删掉的点集中肯定要包含当前分值最小的点. 所以每次删掉 ...

spring.net中间IoC、DI和MVC

轮廓 spring.net它是开源的业务层框架,功能很强大,它归结到什么都有3能:面向切面编程:IoC和DI:提供综合型的框架支持,本片博客主要说一下IoC和DI.和其提供的对MVC框架的支持. Io ...

Spring Boot-------热部署

热部署 热部署重要的是:添加一个jar包 第一步:在我们项目中的pom.xml文件中添加spring-boot-devtools这个jar包,Maven会帮我们自动下载的

eclipse安装阿里编码规约插件

点击帮助,Install New Software... 地址为https://p3c.alibaba.com/plugin/eclipse/update 然后选择安装, 一路next即可

[design-patterns]设计模式之一策略模式

设计模式 从今天开始开启设计模式专栏,我会系统的分析和总结每一个设计模式以及应用场景.那么首先,什么是设计模式呢,作为一个软件开发人员,程序人人都会写,但是写出一款逻辑清晰,扩展性强,可维护的程序就不 ...

indexOf includes 区别

indexOf     返回数值类型   ( 索引.-1 ) includes    返回布尔类型    ( true  .false  ),且能区分出 NaN  undefined ( 如新建空数组 ...

Python Selenium 文件下载

Python Selenium 进UI自动化测试时都会遇到文件上传和下载的操作,下面介绍一下文件下载的操作 这里介绍使用FireFox浏览器进行文件下载的操作. 1.设置文件默认下载地址 如下图,fi ...

菜鸟学数据库(五)——MySQL必备命令

今天跟大家分享一下MySQL从连接到具体操作的一系列常用命令.可能有的人觉得现在有很多可视化的工具,没必要再学习那些具体的命令了,但是我不这么认为,不可否认那些工具的确让我们的工作更加方便快捷,但是如 ...

python open函数encoding_python 读不同编码的文本,传递一个可选的encoding 参数给open() 函数...相关推荐

  1. python add argument list_python argh/argparse:我如何传递一个列表作为命令行参数?

    我试图传递一个参数列表到python脚本使用argh库.可以接受这样的输入的东西: ./my_script.py my-func --argA blah --argB 1 2 3 4 ./my_scr ...

  2. 面试让写一个“bind”函数,详解五层bind函数进阶写法,带你写出一个让面试官满意的 “bind” 函数

    文章目录 手写bind函数 第一层 - 绑定在原型上的方法 第二层 - 改变this的指向 第三层 - 支持柯里化 第四层 - 考虑 new 的调用 第五层 - 保留函数原型 总结最终版bind函数 ...

  3. python定义类时括号_为什么在定义类时括号是可选的,而在定义函数时括号是必需的?...

    我认为你的问题的答案只是语法.这正是Python的设置方式,但我对它的设置方式的看法是: 我认为函数来自数学,比如:f(x) = x 所以当计算机编程语言被创造出来的时候,从模拟数学到编程语言似乎有某 ...

  4. python @修饰符_Python修饰符,返回替换了一个或多个参数的函数

    您必须返回部分作为装饰结果:def decor(func): return partial(func, v=100) 然而,这个总是设置v=100,即使您按位置为v传递了另一个值.你还是会有同样的问题 ...

  5. function函数嵌套 matlab_matlab – 当没有使用“end”时,一个.m文件中的多个函数是嵌套的还是本地的...

    在MATLAB中,您可以在一个.m文件中拥有多个函数.当然有主要功能,然后是 nested or local functions. 每种功能类型的示例: % myfunc.m with local f ...

  6. c语言关于计算的函数,问个c语言题目,关于一个计算器的有参有返回函数!!!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 printf("toM="); scanf("%d",&toM); if(toM==0) printf(& ...

  7. 不是python对文件的读操作方法的是-python的文件操作方法

    python中的文件对象: 文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文 件". 一旦设置了合适的"钩子", 你就可以访 ...

  8. 网页编码与数据传递中的中文字符编码

    最近工作中遇到中文编码,中文参数传递,AJAX返回值包含中文乱码的问题,为此奋斗了一宿,有点心得,有点体会,总结如下,希望对迷惑于此中者有解惑之功效! 在网上一阵狠搜,编码函数的确是有,包括Javas ...

  9. 函数返回引用什么意思_【20200917】编程入门第七课,函数(function)

    介绍 介绍 福哥今天要给大家讲讲编程里的重头戏--函数(function),有了函数,程序才是程序,为什么这么说呢?因为如果没有函数语法,所有重复工作(包括类似工作)都要重复编写代码,那样就失去了编程 ...

最新文章

  1. 计算机组成 试题,计算机组成典型试题及答案
  2. 号外号外 你和python大牛的差距有多少?
  3. tf.train.examle函数
  4. 一种创建进程间COM来启动IE的方式
  5. 关于 Qt 5,你所需要了解的基础知识
  6. 1/2 pymysql:Python连接MySQL数据库
  7. baidu的服务器数据里面装的都是垃圾!
  8. NoSQL 数据库不应该放弃 Consistency
  9. AI大时代下,零基础进入人工智能领域该如何学习?
  10. 最近的问题汇总(至2010/10/6 12:00)
  11. 201671010444 夏向明 词频统计软件项目报告
  12. 斗地主实现洗牌发牌功能
  13. Android View框架总结(五)View布局流程之Layout
  14. paip.重装系统后firefox火狐收藏夹的恢复
  15. 《简明python教程》_简明Python教程
  16. 数字图像处理第三版4.8.4例子GLPF高斯低通滤波器matlab程序
  17. opnet物联网仿真-编程集锦
  18. 机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)...
  19. 控制台报错:Warning: Encountered two children with the same key, `xx`. Keys should be unique
  20. 普通耳机的多源感知功能(智能耳机)

热门文章

  1. 在Visual C++中常用到得一些绘图或者控件的语句(mfc)
  2. RK3288 android7.1.2 i2c 出现timeout 超时错误分析
  3. 同济大学计算机夏令营2021,同济大学2021年优秀学生暑期学校活动通知
  4. 8,16,32位单片机的区别
  5. c语言在线考试系统的需求分析,基于C/S架构的通用计算机在线考试系统
  6. 刷openwrt使用usb键盘时卡在NET: Registered protocol family 24
  7. zoom的成功带来的启示---zoom的夹缝有哪些
  8. linux之cal命令详解,Linux cal命令的使用
  9. android radiobutton切换,radiobutton 点击无法切换
  10. 团体程序设计天梯赛 L2-002 链表去重