如果你像我一样希望能够把事情尽快做好而不去深究,你可能会写一些异常处理的代码把 UnicodeEncodingError糊弄过去先,但当你开始怀疑有多少encoding出错的信息被你丢弃的时候,可能你会很惊奇。于是,你还是会想坐下来,(洗把脸)然后面对自己必须弄懂什么是utf-8,什么是 ‘gb2312’, 什么是 ‘gbk’ 和其中的猫腻。正如有时候猛撕小伤口上邦迪胶布的快感一样,有时候当你认真面对一些你平时一直回避的问题的时候(其实有时候需要的不是勇气), 你反而会觉得“不过如此”,并且能够一劳永逸的解决问题。
关于Python处理Unicode,我所能找到的最言简意赅的入门教程是:
Unicode In Python, Completely Demystified (揭秘Python Unicode)
简要罗列一下最重要最实用的点:
Solution
- Decode early (尽早decode, 将文件中的内容转化成 unicode 再进行下一步处理)
- Unicode everywhere (程序内部处理都用unicode)
- Encode late (最后encode回所需的encoding, 例如把最终结果写进结果文件)
1. Decode early
Decode to <type ‘unicode’> ASAP
>>> def to_unicode_or_bust(
… obj, encoding=’utf-8′):
… if isinstance(obj, basestring):
… if not isinstance(obj, unicode):
… obj = unicode(obj, encoding)
… return obj
…
>>>
detects if object is a string and if so converts to unicode, if not already.
2. Unicode everywhere
>>> to_unicode_or_bust(ivan_uni)
u’Ivan Krsti\u0107′
>>> to_unicode_or_bust(ivan_utf8)
u’Ivan Krsti\u0107′
>>> to_unicode_or_bust(1234)
1234
3. Encode late
Encode to <type ‘str’> when you write to disk or print
>>> f = open(‘/tmp/ivan_out.txt’,’w’)
>>> f.write(ivan_uni.encode(‘utf-8’))
>>> f.close()
我以前一直觉得unicode相关的处理都是很 dirty 的工作,一般都会一边尝试,一边用异常处理去补丁,看完以上这个教程以后豁然开朗。
祝大家也能早日理清处理中文的时候的头绪,坦然直面“神秘”的unicode
相关推荐
通过分析这个游戏的代码,学习者可以了解到如何使用Python处理图形界面、事件循环、对象交互等游戏开发的关键概念。 总的来说,这个主题涵盖了Python编程基础,特别是针对小型应用程序的开发,可能包括了逐步进阶的...
例如,可以使用from distutils.sysconfig import get_config_var 来获取Python的安装路径,这对于一些需要定位Python运行环境的应用程序非常有用。 综上所述,Python作为一种高级脚本语言,其内在的灵活性和功能...
- **11.7 处理列表的工具**:提供了一些处理列表的有效工具和技巧。 - **11.8 十进制浮点数的运算**:介绍了Python中进行精确的十进制浮点数运算的方法。 #### 第十二章 现在干什么? - **章节概述**:这一章为...
《深入 Python 中文版》是一本专为Python初学者及进阶者设计的教程,它提供了全面且深入的Python知识,旨在帮助读者更好地理解和运用这门强大的编程语言。书籍涵盖的内容广泛,包括基础语法、数据结构、函数、类与...
- **零杂技巧**:分享了一些关于类和对象的实用小技巧。 - **异常也是类**:说明了异常在Python中是如何被当作类来处理的。 - **迭代子(Iterators)**:解释了迭代器的工作原理及其应用场景。 - **发生器...
### PYTHON自然语言处理 NLTK 中文版 #### 知识点概述 1. **自然语言处理(NLP)基础知识** - 自然语言处理的基本概念 - NLP的应用场景及重要性 - NLP的基本流程:从数据预处理到模型训练与评估 2. **Python与...
- **Python版本现状**:Python社区同时维护多个版本,每个小版本都享有18个月的错误修复支持和长达五年的安全支持。 - **版本选择挑战**:虽然看起来简单,但选择合适的Python版本需要考虑多种因素。 - **版本迭代...
《学习Python的硬方式》中文版是一本针对初学者的Python编程教材,旨在帮助零基础的读者快速掌握Python编程语言。书名中的“硬方式”指的是通过大量的实践和练习来深入理解和掌握Python语法及编程思维,而非仅仅依赖...
- **实用技巧**:如使用Python Shell快速验证代码逻辑。 **章节内容**: - **第2章:第一个Python程序** - **2.1 概览**:介绍本章将涵盖的内容。 - **2.2 函数声明**:讲解如何定义函数及其参数。 - **2.3 文档...
《Head First Python(中文版)》是一本专注于Python编程语言入门的书籍。这本书采用了一种非传统的方式来教授Python语言,它结合了大量的图像、幽默的语言以及有趣的例子,旨在帮助读者轻松学习Python编程的基础...
Python中有许多库可以完成这个任务,如jieba用于中文分词,nltk或stopwords库用于处理停用词。 3. **数据加载**:使用Python的`gensim`库,我们可以加载和处理大规模文本数据。`gensim`提供了一个方便的接口,支持...
【Python入门教程】系列涵盖了多个基础到进阶的Python知识点,包括了数据导入、网络爬虫、基础语法、错误处理、面试准备、模板库、服务器配置、数据结构、类型操作、异常处理、字符串处理、爬虫开发、应用场景、编码...
总的来说,Python背单词小程序结合了Python的基础编程技巧和特定领域的应用,如音频处理、用户界面设计和学习心理学原理,为用户提供了便捷、高效的单词学习平台。用户只需将单词数据导入,就可以开始他们的背单词之...
总的来说,这个项目结合了Python的自然语言处理能力与数据可视化技术,提供了一个方便的工具,使得非程序员也能轻松地对中文文本进行分析并直观地展示结果。通过这个实践,我们可以深入理解jieba分词的原理和使用,...
这个官方中文版文档不仅覆盖了Python的基础语法,还包括了高级特性、标准库的使用、异常处理、模块系统、网络编程、文件操作、数据库接口、GUI编程等多个方面。无论你是初学者还是经验丰富的开发者,都能从中受益,...
根据提供的文件信息,我们可以看出该文档涉及Python编程语言的多个方面,包括基础知识、字符串和正则表达式、文件操作、日期处理、编程技巧和画图等。以下是对文档中提到的知识点的详细介绍: 1. Python基础:这是...
《Head First Python(中文版)源码》是一个包含书本示例代码和练习的资源集合,旨在帮助初学者深入理解Python编程语言。这本书以其独特的视觉和互动方式教授编程概念,使得学习过程既有趣又有效。这里我们将探讨这...
总的来说,这个教程涵盖了从基础的图像处理到复杂的图像拼接技术,通过Python和OpenCV,你可以构建自己的全景图像生成器,并掌握图像处理的关键技巧。在实践中,不断调整参数和优化算法,可以提高图像拼接的质量和...