|
|
|
|
移动端

2.6.3 中文文件的读写

《自学Python:编程基础、科学计算及数据分析》第2章Python 基础,在本章中,我们将学习Python 语言的基本使用,掌握Python 的基本使用方法,为后续的学习打下基础。本节为大家介绍中文文件的读写。

作者:李金来源:机械工业出版社|2018-05-03 21:25

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.6.3 中文文件的读写

在学习字符串的时候注意到,中文字符的字符串表示和Unicode字符串表示是不同的:

  1. In [1]: a = "中文"   
  2. In [2]: b = u"中文"   
  3. In [3]: len(a)   
  4. Out[3]: 6   
  5. In [4]: len(b)   
  6. Out[4]: 2 

从字符长度的角度来看,Unicode字符串的表示更符合我们的日常认知,所以我们一般使用Unicode字符串处理中文文件。

1.写中文文件

open()函数是按照 ASCII码字符串的形式来读写中文文件的,直接写 Unicode字符串会抛出异常:

  1. In [5]: f = open('tmp.txt', 'w')   
  2. In [6]: f.write(b)   
  3.  
  4. UnicodeEncodeError   Traceback (most recent call last)   
  5. <ipython-input-6-064fd2025c3a> in <module>()   
  6. ----> 1 f.write(b)   
  7.  
  8. UnicodeEncodeError: 'ascii' codec can't encode characters in position   
  9. 0-1: ordinal not in range(128) 

如果要写入 Unicode字符串 b,我们需要用调用它的.encode()方法将其转化为普通字符串:

  1. In [7]: data = b.encode("utf-8")   
  2. In [8]: print data, len(data), type(data)  
  3. 中文 6 <type 'str'>   
  4. In [9]: f.write(data)   
  5. In [10]: f.close() 

这样做不是很方便,好在Python提供了 codecs模块来读写不同格式的字符串。首先导入该模块:

  1. In [11]: import codecs 

我们可以使用 codecs.open()函数实现 Unicode字符串的写入,只需要在打开文件时,通过encoding参数指定文件的编码格式:

  1. In [12]: f = codecs.open("tmp.txt", "w", encoding="utf8")   
  2. In [13]: f.write(b)   
  3. In [14]: f.close()  

2.读中文文件

接下来,我们再看open()函数与codecs.open()函数在读中文文件时的差异。

open()函数只能将中文读成普通字符串:

  1. In [15]: f = open('tmp.txt')   
  2. In [16]: data = f.read()   
  3. In [17]: print data, len(data), type(data)  
  4. 中文 6 <type 'str'>   
  5. In [18]: f.close() 

codecs.open()函数则可以通过指定参数将中文读取成Unicode字符串:

  1. In [19]: f = codecs.open("tmp.txt", encoding="utf8")   
  2. In [20]: data = f.read()   
  3. In [21]: print data, len(data), type(data)  
  4. 中文 2 <type 'unicode'>   
  5. In [22]: f.close() 

因此,在处理中文文件时,我们通常使用codecs.open()函数代替open()函数。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

超级网管员——网络安全

本书全面深入地介绍网络安全的配置与实现技术,包括系统管理、用户账户、病毒防御、灾难恢复、文件备份、安全策略、注册表等服务器安全,用...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊