欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年03月08日 10:06:40   作者:明宇李  
這篇文章主要介紹了python 實現(xiàn)存儲數(shù)據(jù)到txt和pdf文檔及亂碼問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

第一、幾種常用方法

讀取TXT文檔:urlopen()

讀取PDF文檔:pdfminer3k

第二、亂碼問題

(1)、

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

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

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

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

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

解決方法:

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

又對于A,ASCII編碼為01000001,Unicode編碼:0000000001000001此時浪費空間

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

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

在計算機中打開文本時,將轉(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)、解決方法

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

第三、pdfminer3k安裝

法一:

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

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

法二:

(3)、直接在pycharm中安裝

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

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

(5)、讀取pdf文檔:通過文檔對象的get_pages()方法得到pdf每一頁的內(nèi)容,通過解釋器的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
#獲得文檔對象,以二進(jìn)制讀方式打開
fp = open("naacl06-shinyama.pdf", "rb")
#創(chuàng)建一個與文檔關(guān)聯(lián)的分析器
parser = PDFParser(fp)
#創(chuàng)建一個pdf文檔的對象
doc = PDFDocument()
#連接解釋器與文檔對象
parser.set_document(doc)
doc.set_parser(parser)
#初始化文檔,如果文檔有密碼,寫與此。
doc.initialize("")
#創(chuàng)建pdf資源管理器
resource = PDFResourceManager()
#參數(shù)分析器
laparam = LAParams()
#創(chuàng)建聚合器
device = PDFPageAggregator(resource, laparams=laparam)
#創(chuàng)建pdf頁面解釋器
interpreter = PDFPageInterpreter(resource, device)
#使用文檔對象得到頁面的集合
for page in doc.get_pages():
  #使用頁面解釋器讀取
  interpreter.process_page(page)
  #使用聚合器來獲得內(nèi)容
  layout = device.get_result()
  for out in layout:
    if hasattr(out, "get_text"):
      print(out.get_text())

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

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

補充內(nèi)容:

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

相關(guān)文章

  • Python實現(xiàn)鼠標(biāo)自動在屏幕上隨機移動功能

    Python實現(xiàn)鼠標(biāo)自動在屏幕上隨機移動功能

    這篇文章主要介紹了Python實現(xiàn)鼠標(biāo)自動在屏幕上隨機移動功能,具有很好的參考價值,希望對大家有所幫助。還等什么?一起跟隨小編過來看看吧
    2020-03-03
  • Python編程基礎(chǔ)之函數(shù)和模塊

    Python編程基礎(chǔ)之函數(shù)和模塊

    這篇文章主要為大家介紹了Python函數(shù)和模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python常規(guī)方法實現(xiàn)數(shù)組的全排列

    python常規(guī)方法實現(xiàn)數(shù)組的全排列

    這篇文章主要介紹了python常規(guī)方法實現(xiàn)數(shù)組的全排列,實例分析了全排列的概念及Python常規(guī)實現(xiàn)技巧,需要的朋友可以參考下
    2015-03-03
  • python字典的常用操作方法小結(jié)

    python字典的常用操作方法小結(jié)

    下面小編就為大家?guī)硪黄猵ython字典的常用操作方法小結(jié)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • python函數(shù)傳參意義示例詳解

    python函數(shù)傳參意義示例詳解

    這篇文章主要為大家介紹了關(guān)于python函數(shù)傳參的意義示例詳解,有需要的朋友可以借鑒參考下,希望可以加深各位同學(xué)對Python傳參的理解
    2021-10-10
  • PyTorch中的C++擴展實現(xiàn)

    PyTorch中的C++擴展實現(xiàn)

    這篇文章主要介紹了PyTorch中的C++擴展實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python中日志模塊logging的使用技巧和應(yīng)用詳解

    Python中日志模塊logging的使用技巧和應(yīng)用詳解

    在Python開發(fā)中,日志記錄是一個非常重要的環(huán)節(jié),它不僅有助于開發(fā)者追蹤程序的執(zhí)行流程,還能在出現(xiàn)問題時提供關(guān)鍵信息,幫助快速定位并解決問題,本文將結(jié)合實際案例,詳細(xì)介紹logging模塊的基礎(chǔ)用法和高級特性,需要的朋友可以參考下
    2024-08-08
  • 一文搞懂Python中列表List和元組Tuple的使用

    一文搞懂Python中列表List和元組Tuple的使用

    列表List 和 元組Tuple 可以說是 Python 中最通用、最有用的數(shù)據(jù)類型。列表是動態(tài)的,而元組具有靜態(tài)特征。本文將通過示例詳細(xì)講解二者的使用方法,需要的可以參考一下
    2022-04-04
  • pytest插件的7種用法

    pytest插件的7種用法

    本文主要介紹了pytest插件的7種用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python下paramiko模塊實現(xiàn)ssh連接登錄Linux服務(wù)器

    python下paramiko模塊實現(xiàn)ssh連接登錄Linux服務(wù)器

    這篇文章主要介紹了python下paramiko模塊實現(xiàn)ssh連接登錄Linux服務(wù)器的方法,實例分析了paramiko模塊實現(xiàn)ssh連接的具體用法,需要的朋友可以參考下
    2015-06-06

最新評論