一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

2021-09-16 00:30明宇李 Python

這篇文章主要介紹了python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

第一、幾種常用方法

讀取TXT文檔:urlopen()

讀取PDF文檔:pdfminer3k

第二、亂碼問題

(1)、

  1. from urllib.request import urlopen
  2. #訪問wiki內(nèi)容
  3. html = urlopen("https://en.wikipedia.org/robots.txt")
  4. print(html.read())

輸出的結(jié)果中出現(xiàn)亂碼原因:

計算機(jī)只能處理0和1兩個數(shù)字,所以想要處理文本,必須把文本變成0和1這樣的數(shù)字,最早的計算機(jī)使用八個0和1表示一個字節(jié),所以最大能夠表示整數(shù)是255=11111111.如果想要表示更大的數(shù),必須使用更多的字節(jié)。

由于計算機(jī)是美國人發(fā)明的,所以最早只有127個字符被編寫進(jìn)計算機(jī),即常見的阿拉伯?dāng)?shù)字,字母大小寫,以及鍵盤上的符號。此編碼被稱為ASCII編碼,比如大寫字母A的ASCII編碼是65,65再被轉(zhuǎn)換二進(jìn)制01000001,即是計算機(jī)處理的東西。

顯然,ASCII不能表示中文,故中國制定了自己的GB2312編碼,并且兼容ASCII編碼。問題是:使用GB2312編碼的慕課網(wǎng)三個字,假設(shè)編碼為61,62,63.但在ASCII碼表可能是其他字符。如下圖示,日文中的616263編碼成其他字符,打開后意思出錯。

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

解決方法:

國際上的unicode編碼,整合全世界所有編碼。故unicode編碼的內(nèi)容在任一臺計算機(jī)用unicode仍正常打開

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

又對于A,ASCII編碼為01000001,Unicode編碼:0000000001000001此時浪費(fèi)空間

故出現(xiàn)UTF-8編碼:01000001此時用兩個八位存儲中文。

(2)、記事本使用unicode編碼,將記事本存到計算機(jī)時,將轉(zhuǎn)化為utf-8儲存。

在計算機(jī)中打開文本時,將轉(zhuǎn)化為unicode編碼

存儲原因:使用utf-8儲存節(jié)省空間,使用unicode打開保證最大的兼容

(3)、服務(wù)器讀取uncode編碼的文檔,轉(zhuǎn)化為utf-8格式傳給瀏覽器。因為網(wǎng)絡(luò)帶寬昂貴,轉(zhuǎn)化為了減少負(fù)擔(dān)。

(4)、python3字符串默認(rèn)使用Unicode編碼,所以python3支持多種語言

以Unicode表示的str通過encode()方法可以編碼為指定的bytes

如果bytes使用ASCII編碼,遇到ASCII碼表沒有的字符會以\x##表示,此時只用‘\x##'.decode('utf-8')即可

(5)、解決方法

  1. from urllib.request import urlopen
  2. #訪問wiki內(nèi)容
  3. html = urlopen("https://en.wikipedia.org/robots.txt")
  4. print(html.read().decode("utf-8"))

第三、pdfminer3k安裝

法一:

(1)、進(jìn)入網(wǎng)址直接下載并解壓:https://pypi.python.org/pypi/pdfminer3k/

(2)、以管理員身份運(yùn)行命令行窗口,進(jìn)入軟件解壓縮位置,運(yùn)行python setup.py install

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

法二:

(3)、直接在pycharm中安裝

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

(4)、讀取pdf過程:首先創(chuàng)建一個分析器pdfparser和文檔對象pdfdocument,并通過兩個方法相互關(guān)聯(lián),然后調(diào)用文檔對象的初始化方法(可以傳參數(shù)),此時資源內(nèi)容被加載到文檔對象中。

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

創(chuàng)建資源管理器和參數(shù)分析器,然后創(chuàng)建聚合器(整合資源管理器和參數(shù)分析器),通過聚合器創(chuàng)建解釋器(對pdf文檔進(jìn)行編碼,解釋成python能識別的格式)

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

(5)、讀取pdf文檔:通過文檔對象的get_pages()方法得到pdf每一頁的內(nèi)容,通過解釋器的process_page()方法讀取一頁一頁。

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

(6)、實例演示

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

  1. from pdfminer.converter import PDFPageAggregator
  2. from pdfminer.layout import LAParams
  3. from pdfminer.pdfparser import PDFParser, PDFDocument
  4. from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
  5. from pdfminer.pdfdevice import PDFDevice
  6. #獲得文檔對象,以二進(jìn)制讀方式打開
  7. fp = open("naacl06-shinyama.pdf", "rb")
  8. #創(chuàng)建一個與文檔關(guān)聯(lián)的分析器
  9. parser = PDFParser(fp)
  10. #創(chuàng)建一個pdf文檔的對象
  11. doc = PDFDocument()
  12. #連接解釋器與文檔對象
  13. parser.set_document(doc)
  14. doc.set_parser(parser)
  15. #初始化文檔,如果文檔有密碼,寫與此。
  16. doc.initialize("")
  17. #創(chuàng)建pdf資源管理器
  18. resource = PDFResourceManager()
  19. #參數(shù)分析器
  20. laparam = LAParams()
  21. #創(chuàng)建聚合器
  22. device = PDFPageAggregator(resource, laparams=laparam)
  23. #創(chuàng)建pdf頁面解釋器
  24. interpreter = PDFPageInterpreter(resource, device)
  25. #使用文檔對象得到頁面的集合
  26. for page in doc.get_pages():
  27. #使用頁面解釋器讀取
  28. interpreter.process_page(page)
  29. #使用聚合器來獲得內(nèi)容
  30. layout = device.get_result()
  31. for out in layout:
  32. if hasattr(out, "get_text"):
  33. print(out.get_text())

一下用于讀取網(wǎng)站上pdf內(nèi)容

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

補(bǔ)充內(nèi)容:

python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持我們。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/mingyuli/article/details/79737634

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品久久国产青草 | 色婷婷综合缴情综六月 | 交换朋友夫妇3中文字幕 | 国产卡一卡二卡3卡乱码免费 | 暖暖免费观看高清在线 | 校草让我脱了内裤给全班看 | 地址二地址三2021变更 | 国产精品久久久久久久午夜片 | 久久综合视频网站 | 国模人体aⅴ | 搞逼综合网 | ady@ady9.映画网 | 久草在线精彩免费视频 | 免费高清观看 | 国产精品青青青高清在线密亚 | 99久久99久久免费精品蜜桃 | 色天天色综合 | 亚洲精美视频 | 欧美日韩国产一区二区三区伦 | 手机在线观看国产精选免费 | 视频免费观看在线播放高清 | 美女和男人差差 | 欧美一区精品 | 黑人巨大vs北条麻妃在线 | 亚洲免费精品 | 欧美日韩中文字幕久久伊人 | 国产高清不卡视频在线播放 | 国产色视频一区二区三区 | 深夜影院深a久久 | 亚洲一级特黄 | 日日操天天射 | 国产成人精品午夜免费 | 91探花在线观看 | 女同久久另类99精品国产 | 日日干天天爽 | 边吃奶边扎下面 | 我在厨房摸岳的乳HD在线观看 | 97午夜| 男人j桶进女人p桶爽 | 国产精品香蕉一区二区三区 | 兽皇日本 |