python 实现存储数据到txt和pdf文档及乱码问题的解决

 更新时间:2021年03月08日 10:06:40   作者:明宇李  
这篇文章主要介绍了python 实现存储数据到txt和pdf文档及乱码问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

第一、几种常用方法

读取TXT文档:urlopen()

读取PDF文档:pdfminer3k

第二、乱码问题

(1)、

from urllib.request import urlopen
#访问wiki内容
html = urlopen("https://en.wikipedia.org/robots.txt")
print(html.read())

输出的结果中出现乱码原因:

计算机只能处理0和1两个数字,所以想要处理文本,必须把文本变成0和1这样的数字,最早的计算机使用八个0和1表示一个字节,所以最大能够表示整数是255=11111111.如果想要表示更大的数,必须使用更多的字节。

由于计算机是美国人发明的,所以最早只有127个字符被编写进计算机,即常见的阿拉伯数字,字母大小写,以及键盘上的符号。此编码被称为ASCII编码,比如大写字母A的ASCII编码是65,65再被转换二进制01000001,即是计算机处理的东西。

显然,ASCII不能表示中文,故中国制定了自己的GB2312编码,并且兼容ASCII编码。问题是:使用GB2312编码的慕课网三个字,假设编码为61,62,63.但在ASCII码表可能是其他字符。如下图示,日文中的616263编码成其他字符,打开后意思出错。

解决方法:

国际上的unicode编码,整合全世界所有编码。故unicode编码的内容在任一台计算机用unicode仍正常打开

又对于A,ASCII编码为01000001,Unicode编码:0000000001000001此时浪费空间

故出现UTF-8编码:01000001此时用两个八位存储中文。

(2)、记事本使用unicode编码,将记事本存到计算机时,将转化为utf-8储存。

在计算机中打开文本时,将转化为unicode编码

存储原因:使用utf-8储存节省空间,使用unicode打开保证最大的兼容

(3)、服务器读取uncode编码的文档,转化为utf-8格式传给浏览器。因为网络带宽昂贵,转化为了减少负担。

(4)、python3字符串默认使用Unicode编码,所以python3支持多种语言

以Unicode表示的str通过encode()方法可以编码为指定的bytes

如果bytes使用ASCII编码,遇到ASCII码表没有的字符会以\x##表示,此时只用‘\x##'.decode('utf-8')即可

(5)、解决方法

from urllib.request import urlopen
#访问wiki内容
html = urlopen("https://en.wikipedia.org/robots.txt")
print(html.read().decode("utf-8"))

第三、pdfminer3k安装

法一:

(1)、进入网址直接下载并解压:https://pypi.python.org/pypi/pdfminer3k/

(2)、以管理员身份运行命令行窗口,进入软件解压缩位置,运行python setup.py install

法二:

(3)、直接在pycharm中安装

(4)、读取pdf过程:首先创建一个分析器pdfparser和文档对象pdfdocument,并通过两个方法相互关联,然后调用文档对象的初始化方法(可以传参数),此时资源内容被加载到文档对象中。

创建资源管理器和参数分析器,然后创建聚合器(整合资源管理器和参数分析器),通过聚合器创建解释器(对pdf文档进行编码,解释成python能识别的格式)

(5)、读取pdf文档:通过文档对象的get_pages()方法得到pdf每一页的内容,通过解释器的process_page()方法读取一页一页。

(6)、实例演示

from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
#获得文档对象,以二进制读方式打开
fp = open("naacl06-shinyama.pdf", "rb")
#创建一个与文档关联的分析器
parser = PDFParser(fp)
#创建一个pdf文档的对象
doc = PDFDocument()
#连接解释器与文档对象
parser.set_document(doc)
doc.set_parser(parser)
#初始化文档,如果文档有密码,写与此。
doc.initialize("")
#创建pdf资源管理器
resource = PDFResourceManager()
#参数分析器
laparam = LAParams()
#创建聚合器
device = PDFPageAggregator(resource, laparams=laparam)
#创建pdf页面解释器
interpreter = PDFPageInterpreter(resource, device)
#使用文档对象得到页面的集合
for page in doc.get_pages():
  #使用页面解释器读取
  interpreter.process_page(page)
  #使用聚合器来获得内容
  layout = device.get_result()
  for out in layout:
    if hasattr(out, "get_text"):
      print(out.get_text())

一下用于读取网站上pdf内容

fp = urlopen(http://www.tencent.com/zh-cn/articles/8003251479983154.pdf)

补充内容:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • Python解决Flutter项目简体字问题的方法

    Python解决Flutter项目简体字问题的方法

    作为面向大陆外市场的应用,我们经常编写代码的时候往往忘记切换繁体字导致上线后出现简体字,因为研究下业内相关插件,看看怎么好解决这个问题,OpenCC 支持语言比较多,所以基于此尝试了用 Python 去实现,需要的朋友可以参考下
    2024-07-07
  • Python处理字节串:struct.pack和struct.unpack使用

    Python处理字节串:struct.pack和struct.unpack使用

    这篇文章主要介绍了Python处理字节串:struct.pack和struct.unpack使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Python中操作各种多媒体,视频、音频到图片的代码详解

    Python中操作各种多媒体,视频、音频到图片的代码详解

    这篇文章主要介绍了Python玩转各种多媒体,视频、音频到图片,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python读取含url图片链接的txt文档方法小结

    Python读取含url图片链接的txt文档方法小结

    这篇文章主要为大家详细介绍了三种Python读取含url图片链接的txt文档方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • 如何使用python计算复杂三角函数

    如何使用python计算复杂三角函数

    当涉及到计算复杂的三角函数时,Python 提供了强大的数学库和函数来帮助我们进行计算,在本篇博客中,我将介绍如何使用 Python 来计算复杂的三角函数,需要的朋友可以参考下
    2023-08-08
  • Python数据可视化plt.savefig如何将图片存入固定路径

    Python数据可视化plt.savefig如何将图片存入固定路径

    这篇文章主要介绍了Python数据可视化plt.savefig如何将图片存入固定路径问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python GUI库图形界面开发之PyQt5拖放控件实例详解

    python GUI库图形界面开发之PyQt5拖放控件实例详解

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5使用拖放控件实例详解,需要的朋友可以参考下
    2020-02-02
  • Python+pyecharts绘制双动态曲线教程详解

    Python+pyecharts绘制双动态曲线教程详解

    pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒。本文将用pyecharts绘制双动态曲线,需要的可以参考一下
    2022-06-06
  • Python算法之图的遍历

    Python算法之图的遍历

    这篇文章主要介绍了Python算法之图的遍历,涉及遍历算法BFS和DFS,以及寻找图的(强)连通分量的算法等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python中位运算的详细用法教程

    Python中位运算的详细用法教程

    在Python中,位运算是一种对二进制数进行操作的运算方式,它们直接对二进制位进行操作,而不考虑这些位所表示的实际值,本文将详细介绍Python中的位运算符,需要的朋友可以参考下
    2024-08-08

最新评论