Python處理txt文本

2021-03-02 郭疙瘩的小山頭

一. 背景目的

上一篇推文可以獲得WOS導出文獻內容,接著就是對文本進行處理。提取出其中的有用信息,比如 作者信息、年份、引用因子、題目等等,同樣繼續用Python處理很方便。

二. 實現方法

2.1 分析需要什麼樣的數據結構

txt 文檔內容可以簡化為如下的文檔結構,每一篇文獻的參數用兩位大寫字母表示。比如,TI 表示文獻的標題,AU表示文獻的作者等等,ER表示到達文獻的末尾,同時文獻與文獻之間用空行分隔! 

PJ : YYYYYYAU : XXXXXXTI : MMMMMMAB : ZZZZZZ  UT : UUUUUUPM : IIIIIIER  
PG : YYYYY

真實的文檔結構如下圖所示

如果想提取其中的某些關鍵信息,用正則表達式可以做到。但是作為一個輕微強迫症就想把所有信息都保存下來,然後就可以根據自己的規則隨意調取所需數據,於是我想到了用 list 和 dict 來保存所有數據。

total = [paper1, paper2, paper3]paper = {  "AU': "UUUUU",     '''   "TI": "TTTT",}

整個文件打包成一個list,這樣可以通過切片訪問每一篇文獻,同時具體的文獻信息用dict表示,根據索引 "AU" ,"TI"...等等就可以訪問到其中的內容。

2.2 代碼的實現

這次代碼不多,直接貼在這裡! 

def get_doi(file_name):    packages = []    package_dict = {}    flag = False    with open(file_name, 'r', encoding='utf-8') as f:        while True:            line = f.readline()            if line:                if line[:2] != 'ER':                    if line[:2] != '  ':                        flag = False                        if not flag:                            temp_str = ''                            temp_title = ''                        temp_title = line[:2]                        temp_str = line[3:-1] if temp_title != 'AU' else line[3:-1] + ';'                        package_dict[temp_title] = temp_str                       elif line[:2] == '  ' and line != '\n':                        flag = True                        temp_str += line[2:-1] if temp_title != 'AU' else line[3:-1] + ';'                        package_dict[temp_title] = temp_str                 else:                    packages.append(package_dict)                    package_dict = {}            else:                break    return packages

三. 結果展示

if __name__ == "__main__":    file_name = 'LNOI.txt'    allpapers = get_doi(file_name)    print("total has {} papers".format(len(allpapers)))     for index, items in enumerate(allpapers[10:20]):         try:            doi = items['DI']            print(doi)        except Exception :            print('no doi')

輸出顯示:可以看到成功的列印了第10-19的文獻doi。

四. 後續計劃

將提取出來的數據進行分析,EXCEL?根據DOI爬蟲下載文獻?

相關焦點

  • Python腳本4:根據txt文本,批量創建文件夾
    根據txt文本每一行的類別,創建文件名為類別的文件夾。# 目標是讀取txt的每一行數據創建對應名字的文件夾# 1通過函數調用解決創建固定的文件夾# 2創建一個txt文件輸出裡面的內容輸出# 3將txt輸出內容和創建文件夾連結完成任務# 4後續補充檢測文本文件是否存在,不在報錯# 5後續補充如果已經有了文本中的文件夾跳過這個文件名創建下一個# 結束# 反思:目前創建的文件夾目錄固定、文本文檔位置固定# 完善功能:# 1.先把文件夾目錄改為交互式用戶設置
  • 基於python將音頻文件轉化為文本輸出
    實驗目的:學習利用python進行音頻轉文本文件實驗環境:已正確安裝python3.51、需要安裝的第三方庫(1)安裝speechrecognition2、「wav」音頻音頻文件轉化為文本文件輸出註:由於我的有些庫安裝在了D:\Anaconda\Lib\site-packages下所以需要在開始添加其路徑,下同完整代碼:# -*- coding: utf-8 -*-
  • python的中文文本挖掘庫snownlp進行購物評論文本情感分析實例
    ,用R語言做的,發現R語言對文本處理特別不友好,沒有很多強大的庫,特別是針對中文文本的,加上那時候還沒有學機器學習算法。現在研一,機器學習算法學完以後,又想起來要繼續學習文本挖掘了。所以前半個月開始了用Python進行文本挖掘的學習,很多人都推薦我從《python自然語言處理》這本書入門,學習了半個月以後,可能本科畢業設計的時候有些基礎了,再看這個感覺沒太多進步,並且這裡通篇將nltk庫進行英文文本挖掘的,英文文本挖掘跟中文是有很大差別的,或者說學完英文文本挖掘,再做中文的,也是完全懵逼的。
  • Python讀寫txt文本(示例說明)
    txt讀寫相對來說比較簡單寫,以下通過一個簡單的示例來感受下讀寫的效果。
  • python的requirements.txt的創建及使用
    python在中,可以使用requirements.txt記錄當前環境所使用的包及版本,以便其他系統中部署相同的環境。這裡介紹兩種常用python包管工具的創建和執行requirements.txt的方法pip方式:創建:(venv) $ pip freeze >requirements.txt
  • python入門教程06-02(python語法入門之文件處理)
    上一章講解了python的字符編碼,了解了python的字符代碼結構之後就需要了解一下python這門語言是如何處理你給的命令,怎麼去處理文件的,下面我們來了解一二。一 引入應用程式運行過程中產生的數據最先都是存放於內存中的,若想永久保存下來,必須要保存於硬碟中。
  • 如何不花錢將微信聊天記錄導出txt、文本?
    求大神支招「生活中有不少場景都需要將微信聊天記錄導成txt文本。和女朋友多年的微信聊天記錄,裡面有很多屬於兩個人的甜蜜回憶,可以將其導出txt文本,然後列印成小冊子作為紀念,也可以使用python工具生成詞雲展示你們最常使用的詞語,讓女朋友感受一下來自理科生的浪漫。
  • python辦公自動化(二) | 讀取.txt、.data、.doc和.docx文檔的部分內容
    python的文件操作,是python辦公自動化的最基礎部分。
  • Python數據科學實踐 | 文本分析2
    清洗數據, 刪除空的數據def clean_sents(txt):    txt = str(txt) if txt is not None else ""    if len(txt) == 0:        return None    else:        return txt
  • [Python]文件與異常的錯誤處理
    [Python]文件與異常的錯誤處理1.文件的處理過程# 文件基本操作:打開文件,處理文件,關閉文件the_file = open("sketch.txt", 'r')line_content = the_file.readline()  # 不指定readline的參數,讀取一整行print(line_content)
  • Python文本處理工具都有哪些?
    從網頁上獲取文本數據之後,依據任務的不同,就需求進行根本的文本處理了,譬如關於英文來說,需求根本的tokenize,關於中文,則需求常見的中文分詞。那麼,Python文本處理東西都有哪些呢?今天就跟隨小編一起來了解下吧!
  • Python中open()的使用方法,你造嗎?
    'r+'不清空,不創建不要用二進位模式打開文本文件先看下面代碼的「詭異」現象。假設在windows下,我有個f.txt文件,裡面的內容是下面這樣的。helloworld代碼一,with open('f.txt', 'r') as f:     print f.readlines() with open('f.txt', 'rb') as f:     print f.readlines()輸出['hello\n', 'world
  • python異常處理與上下文管理器
    異常處理異常與錯誤錯誤可以通過IDE或者解釋器給出提示的錯誤opentxt('a.jpg','r')語法層面沒有問題,但是自己代碼的邏輯有問題if age>18: print('未成年')異常多指在程序執行過程中,出現的未知錯誤,語法和邏輯本身是正確的。
  • python數據處理 | 氣象數據的常用格式以及處理方法
    這次我們來簡單了解下氣象數據常用的格式以及處理的工具,常用的數據格式包括普通的二進位格式、文本數據、NetCDF、HDF4/5以及GRIB1/2數據。我們可以利用程式語言例如python、matlab以及c語言,根據數據的說明文檔或者相應的數據api開發文檔進行讀取,此外我們也可以根據提供的command命令行進行高效提取數據。
  • 史上最全的 Linux Shell 文本處理工具集錦,快收藏!
    來自:大CC連結:www.cnblogs.com/me15/p/3427319.html本文將介紹Linux下使用Shell處理文本時最常用的工具
  • 教程:Python拆分基因篩選數據
    前一段時間,一位本校生科院的同事尋求幫助:怎樣將一個數據量很大的基因篩選數據文件拆分成單個的txt文本文件?為了適應不同的基因篩選實驗數據的處理,python程序運行時,需要一個輸入框,輸入原數據文件名(例如no_ex.cds.align.txt),確定後,python程序就可以執行自動拆分操作了。
  • python 異常處理
    對於python來說,就是工廠類被具體工廠繼承。這樣在簡單工廠模式裡集中在工廠方法上的壓力可以由工廠方法模式裡不同的工廠子類來分擔。抽象的工廠類提供了一個創建對象的方法,也叫作工廠方法。1) 抽象工廠角色(Factory): 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實現的接口或者必須繼承的父類。
  • 使用Python圖像處理庫Pillow處理圖像文件
    本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。CS2.1 安裝PillowPillow是Python中的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。
  • 搞定Linux Shell文本處理工具,看完這篇集錦就夠了
    下面我介紹Linux下使用Shell處理文本時最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和參數都是最常用和最為實用的;我對shell腳本使用的原則是命令單行書寫,儘量不要超過2行;如果有更為複雜的任務需求,還是考慮python吧;1、find
  • Python中的文件處理–為初學者學習Python文件處理
    Python文件處理操作(也稱為Python I / O)處理兩種類型的文件。他們是:即使兩種文件類型在表面上看起來相同,它們對數據的編碼也不同。文本文件由一系列行構成。並且,文本文件的每一行都包含一個字符序列。文本文件中每行的終止都以行尾(EOL)表示。有一些特殊字符可以用作EOL,但逗號{,}和換行符是最常見的字符。