2017-03-06 42 views
0

我在python初學者,我用這條線如何使用循環訪問我自己的分類語料庫中的每個文本文件?

reader = CategorizedPlaintextCorpusReader('~/CorpusMain/', 
             r'.*\.txt', cat_pattern=r'(\w+)/*') 

裏面我CorpusMain文件夾,我有類別進一步三個文件夾。我需要分別訪問每個類別中的每個文本文件內容,爲包含文本文件的每個類別構建一個列表,如 category1 = ['textfile1 content','textfile2 content'... etc] 我想使用我的閱讀器,這意味着引用每個文件(fileids()),並得到它的reader.raw結果...

我需要這些來回饋給我的CountVectorizer,爲每個類別構建一個向量。

回答

0

我會建議類似os.listdir的東西,它將返回指定的路徑內容列表作爲其參數。

一個例子:

對於像一個目錄結構:

CorpusMain 
├ text1.txt 
└ text2.txt 

text1.txt:

Text 1 content 

text2.txt:

Text 2 content 

以下代碼:

import os 

def get_txt_content(path, txt): 
    with open(path + r'\\' + txt, 'r') as text_file: 
     return text_file.read() 

def list_txt_content(path): 
    textfiles = [_file for _file in os.listdir(path) if _file.endswith('.txt')] 
    return [get_txt_content(path, txt) for txt in textfiles] 

print list_txt_content(r'~/CorpusMain') 

會產生像這樣的列表:

['Text 1 content', 'Text 2 content'] 

希望它能幫助。

+0

我實際上想要構建一個包含單個文件的每個元素的語料庫數組,例如:corpus = ['this is text file1 content','this is text file 2 content'....],so我想要我的閱讀器文件的原始數據... – x200

+0

所以,你只是想列出每個文本文件在特定文件夾中的內容? – Szabolcs

+1

我修好了。非常感謝您的幫助! :d – x200

相關問題