`

Python处理中文的时候的一些小技巧

阅读更多

         如果你像我一样希望能够把事情尽快做好而不去深究,你可能会写一些异常处理的代码把 UnicodeEncodingError糊弄过去先,但当你开始怀疑有多少encoding出错的信息被你丢弃的时候,可能你会很惊奇。于是,你还是会想坐下来,(洗把脸)然后面对自己必须弄懂什么是utf-8,什么是 ‘gb2312’, 什么是 ‘gbk’ 和其中的猫腻。正如有时候猛撕小伤口上邦迪胶布的快感一样,有时候当你认真面对一些你平时一直回避的问题的时候(其实有时候需要的不是勇气), 你反而会觉得“不过如此”,并且能够一劳永逸的解决问题。

关于Python处理Unicode,我所能找到的最言简意赅的入门教程是:

Unicode In Python, Completely Demystified (揭秘Python Unicode)

 

简要罗列一下最重要最实用的点:

 

Solution

  1. Decode early (尽早decode, 将文件中的内容转化成 unicode 再进行下一步处理)
  2. Unicode everywhere (程序内部处理都用unicode)
  3. 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小程序7 python小程序7 python小程序7 python小程序7

    通过分析这个游戏的代码,学习者可以了解到如何使用Python处理图形界面、事件循环、对象交互等游戏开发的关键概念。 总的来说,这个主题涵盖了Python编程基础,特别是针对小型应用程序的开发,可能包括了逐步进阶的...

    Python那些事——说说Python那些不为人知的技巧!

    例如,可以使用from distutils.sysconfig import get_config_var 来获取Python的安装路径,这对于一些需要定位Python运行环境的应用程序非常有用。 综上所述,Python作为一种高级脚本语言,其内在的灵活性和功能...

    python_中文手册

    - **11.7 处理列表的工具**:提供了一些处理列表的有效工具和技巧。 - **11.8 十进制浮点数的运算**:介绍了Python中进行精确的十进制浮点数运算的方法。 #### 第十二章 现在干什么? - **章节概述**:这一章为...

    深入 Python 中文版 有源码

    《深入 Python 中文版》是一本专为Python初学者及进阶者设计的教程,它提供了全面且深入的Python知识,旨在帮助读者更好地理解和运用这门强大的编程语言。书籍涵盖的内容广泛,包括基础语法、数据结构、函数、类与...

    中文版的python指导

    - **零杂技巧**:分享了一些关于类和对象的实用小技巧。 - **异常也是类**:说明了异常在Python中是如何被当作类来处理的。 - **迭代子(Iterators)**:解释了迭代器的工作原理及其应用场景。 - **发生器...

    PYTHON自然语言处理 NLTK 中文版

    ### PYTHON自然语言处理 NLTK 中文版 #### 知识点概述 1. **自然语言处理(NLP)基础知识** - 自然语言处理的基本概念 - NLP的应用场景及重要性 - NLP的基本流程:从数据预处理到模型训练与评估 2. **Python与...

    Serious Python中文版.docx

    - **Python版本现状**:Python社区同时维护多个版本,每个小版本都享有18个月的错误修复支持和长达五年的安全支持。 - **版本选择挑战**:虽然看起来简单,但选择合适的Python版本需要考虑多种因素。 - **版本迭代...

    learn-python-the-hard-way中文版

    《学习Python的硬方式》中文版是一本针对初学者的Python编程教材,旨在帮助零基础的读者快速掌握Python编程语言。书名中的“硬方式”指的是通过大量的实践和练习来深入理解和掌握Python语法及编程思维,而非仅仅依赖...

    征服python中文版

    - **实用技巧**:如使用Python Shell快速验证代码逻辑。 **章节内容**: - **第2章:第一个Python程序** - **2.1 概览**:介绍本章将涵盖的内容。 - **2.2 函数声明**:讲解如何定义函数及其参数。 - **2.3 文档...

    Head_First_Python(中文版)

    《Head First Python(中文版)》是一本专注于Python编程语言入门的书籍。这本书采用了一种非传统的方式来教授Python语言,它结合了大量的图像、幽默的语言以及有趣的例子,旨在帮助读者轻松学习Python编程的基础...

    Python-利用Python构建Wiki中文语料词向量模型试验

    Python中有许多库可以完成这个任务,如jieba用于中文分词,nltk或stopwords库用于处理停用词。 3. **数据加载**:使用Python的`gensim`库,我们可以加载和处理大规模文本数据。`gensim`提供了一个方便的接口,支持...

    python入门教程大全.pdf 精心整理

    【Python入门教程】系列涵盖了多个基础到进阶的Python知识点,包括了数据导入、网络爬虫、基础语法、错误处理、面试准备、模板库、服务器配置、数据结构、类型操作、异常处理、字符串处理、爬虫开发、应用场景、编码...

    python背单词小程序

    总的来说,Python背单词小程序结合了Python的基础编程技巧和特定领域的应用,如音频处理、用户界面设计和学习心理学原理,为用户提供了便捷、高效的单词学习平台。用户只需将单词数据导入,就可以开始他们的背单词之...

    用Python做中文分词和绘制词云图

    总的来说,这个项目结合了Python的自然语言处理能力与数据可视化技术,提供了一个方便的工具,使得非程序员也能轻松地对中文文本进行分析并直观地展示结果。通过这个实践,我们可以深入理解jieba分词的原理和使用,...

    Python 3.7.3 文档 官方中文版

    这个官方中文版文档不仅覆盖了Python的基础语法,还包括了高级特性、标准库的使用、异常处理、模块系统、网络编程、文件操作、数据库接口、GUI编程等多个方面。无论你是初学者还是经验丰富的开发者,都能从中受益,...

    Python快速上手.pdf

    根据提供的文件信息,我们可以看出该文档涉及Python编程语言的多个方面,包括基础知识、字符串和正则表达式、文件操作、日期处理、编程技巧和画图等。以下是对文档中提到的知识点的详细介绍: 1. Python基础:这是...

    Head_First_Python(中文版)源码

    《Head First Python(中文版)源码》是一个包含书本示例代码和练习的资源集合,旨在帮助初学者深入理解Python编程语言。这本书以其独特的视觉和互动方式教授编程概念,使得学习过程既有趣又有效。这里我们将探讨这...

    python+OpenCV实现全景图像拼接和图像黑边处理

    总的来说,这个教程涵盖了从基础的图像处理到复杂的图像拼接技术,通过Python和OpenCV,你可以构建自己的全景图像生成器,并掌握图像处理的关键技巧。在实践中,不断调整参数和优化算法,可以提高图像拼接的质量和...

Global site tag (gtag.js) - Google Analytics