通过python在html文件中截取table标签内容时,出现了UnicodeEncodeError: 'gbk' codec can't encode character u'\xc7' in position 2: illegal multibyte sequence。

运行代码:

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

import re

from BeautifulSoup import *

html_tags = open('html_tags_su.txt', 'r').read()# get the html detail

soup = BeautifulSoup(html_tags) # creat a soup.

table = soup.find('table')# find the table tag

table_tags = open('table_tags.txt','w')

table_tags.write(table.text.encode('gbk'))

table_tags.close()

错误图片:

如果将‘gbk’替换为‘gb18030’,虽然可以消除错误,但是输出的结果为乱码。

乱码

经过多次尝试,发现了模块codecs。

codecs模块是专门用作编码转换,在原有代码中引入codecs模块UnicodeEncodeError问题解决了。

修正后的代码:

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

import re

import codecs

from BeautifulSoup import *

html_tags = codecs.open('html_tags_su.txt', 'r', 'GBK').read()# get the html detail

soup = BeautifulSoup(html_tags) # creat a soup.

table = soup.find('table')# find the table tag

table_tags = open('table_tags.txt','w')

table_tags.write(table.text.encode('gbk'))

table_tags.close()

运行输出结构为:

---------------------------------------------------------------------------------------------------------

codecs模块的应用形式主要有两种示例代码分别如下

# -*- encoding: utf-8 -*-

import  codecs

#  创建gb2312编码器

look   =  codecs.lookup( " gb2312 " )

#  创建utf-8编码器

look2  =  codecs.lookup( " utf-8 " )

a  =   " 我爱北京 "

b  =  look.decode(a)#注意这时的b为包含(b[0], b[1])的元组,b[0]是字符串,b[1]为字符串的长度。

# -*- encoding: utf-8 -*-

import  codecs

#  用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode

bfile  =  codecs.open( " dddd.txt " ,  ' r ' ,  " big5 " )

# bfile = open("dddd.txt", 'r')

ss  =  bfile.read()

bfile.close()

#  输出,这个时候看到的就是转换后的结果。如果使用语言内建的open函数来打开文件,这里看到的必定是乱码

print  ss, type(ss)

python中codecs模块_python codecs模块解决UnicodeEncodeError相关推荐

  1. python中getopt函数_python getopt模块使用方法

    python中 getopt 模块,是专门用来处理命令行参数的 getop标准格式: 函数getopt(args, shortopts, longopts = []) shortopts 是短参数   ...

  2. python中math函数_Python math模块 数学函数教程

    在Python基础教程中,大家都已经了解了Python有很多运算符可以进行一些数学运算,但是要处理复杂的问题是不是所有代码都要自己一行一行的来编写呢? 玩蛇网提醒大家,这个时候,最先想到的就应该是py ...

  3. python中getopt函数_python getopt模块详解

    getopt这个函数 就是用来抽取 sys.argv 获得的用户输入来确定执行步骤. getopt是个模块,而这个模块里面又有getopt 函数,所以getopt需要这样这样用. getopt.get ...

  4. python中options类_Python的OptionParser模块

    Python中强大的选项处理模块. 示例 #!/usr/bin/pythonfrom optparse import OptionParser parser = OptionParser() pars ...

  5. Python中常用的数据分析工具(模块)有哪些?

    本期Python培训分享:Python中常用的数据分析工具(模块)有哪些?Python本身的数据分析功能并不强,需要安装一些第三方的扩展库来增强它的能力.我们课程用到的库包括NumPy.Pandas. ...

  6. python pp模块_python常用模块

    1.re模块 re模块用于对python的正则表达式的操作 1.1 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物 ...

  7. Python中计算程序的运行时间——timeit模块

    Python中计算程序的运行时间--timeit模块 绪论 一.timeit的基本用法 1.1 timeit.timeit()函数: 创建一个Timer实例,并运行代码进行计时,默认将代码执行一百万次 ...

  8. split在python中什么意思_python 正则表达式 split(python里split什么意思)

    split rom gui我想用正则表达式实现.谢谢. 问题说split(new char[] {'/t'}明: 例如:s = "01-1" 或 s = "01-01" 想截取"01-&qu ...

  9. python中text格式_python读取各种格式的文本

    1. 读取word文本 Python可以利用python-docx模块处理word文档,处理方式是面向对象的,python-docx模块会把word文档中的段落.文本.字体等都看做对象,对对象进行处理 ...

  10. python中unexpected indent报错的解决办法

    python中unexpected indent报错的解决办法 在我们初步学习pyton的时候,由于对python语言的学习掌握不充分,则会导致所编写的代码,运行时候报错.比如,容易报错的unexpe ...

最新文章

  1. Java 内存泄漏排查,新技能+1
  2. SQL标准结构化语言练习,SQL增删查改,SQL实现对bank数据的操作
  3. MySQL Connector/C++ 接口实例
  4. Linux 网络编程—— libpcap 详解
  5. C语言写一个简单的数学程序,用C语言计算简单的数学式子
  6. 这些Python好书,助你开发一臂之力
  7. c++中的new_handler
  8. linux用户空间注册按键事件,linux下获取按键响应事件
  9. 【转】状态机思路在程序设计中的应用
  10. ORACLE 如何产生一个随机数
  11. Struts2国际化——完整实例代码
  12. RGBA alpha 透明度混合算法实现和测试
  13. aes 加密_PHP使用AES加密和解密
  14. hdu 1561(树形dp)
  15. mbedtls | 01 - 移植mbedtls库到STM32的两种方法
  16. 前端实现ICON图标生成器
  17. 如何成为数据分析师?小白这样做,快速入门数据分析
  18. 调试Linux OpenWrt 2.6.36+华为ME909s-821 4G模块
  19. nbiot电信平台android,nbiot之bc26 连接电信网联网平台
  20. [视觉概述] 机器视觉应用方向、项目流程及学习思路总结

热门文章

  1. 老公是用来欺负的....
  2. LoadRunner Controller监控画面没有数据显示
  3. IDEA提交的git账户和git登录的账户不一致2021.12.8
  4. java与前端的区别_java与前端的区别
  5. html关闭ios橡皮筋效果,禁止ios浏览器页面上下滚动 (橡皮筋效果)
  6. 【计算机图形学】用python的turtle进行简单的图形绘制
  7. 四小时挣六万,这个CTF比赛在撒钱吗?
  8. 51 nod 1082 与7无关的数
  9. 日常Linux命令--vi/vim复制一行,粘贴
  10. 【Docker】导入/出-win7