2017-03-25 35 views
1

而不是定義documents這樣的......讀取文本文件到列表在Python

documents = ["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"] 

...我想讀第一句兩個不同的txt文件相同的三句話中的第一個文件,第二個文件中的句子2和3。

我想出了這個代碼:

# read txt documents 
os.chdir('text_data') 
documents = [] 
for file in glob.glob("*.txt"): # read all txt files in working directory 
    file_content = open(file, "r") 
    lines = file_content.read().splitlines() 
    for line in lines: 
     documents.append(line) 

但是從兩種策略產生的documents似乎是在不同的格式。我想要第二個策略產生與第一個相同的輸出。

+1

......怎麼了?請嘗試針對您的問題陳述進行具體說明。 –

+0

爲了清晰起見進行了編輯。 – textnet

+1

我的觀點是,代替寫「由兩種策略產生的'文檔'似乎是以不同的格式」,你應該改爲*顯示輸出* –

回答

0

而不是.read().splitlines(),您可以使用.readlines()。這會將每個文件的內容放入列表中。

+0

這是如何回答這個問題?這應該只是一個評論... –

+0

我是新來堆棧溢出,@ juanpa.arrivillaga。我的意思是,.readlines()創建的列表的內容可以進一步附加到文檔中,但是我發現最近的評論回答了我想解釋的內容。謝謝。 –

1

如果我正確理解你的代碼,這是等價的,更高性能的(不把整個文件讀入一個字符串,然後分割成一個列表)。

os.chdir('text_data') 
documents = [] 
for file in glob.glob("*.txt"): # read all txt files in working directory 
    documents.extend(line for line in open(file)) 

或者甚至可能只有一行。

documents = [ line for line in open(file) for file in glob.glob("*.txt") ] 
+2

你需要在列表理解中反轉「for」的順序 –

0

...我想從兩個不同的txt文件 在第一個文件的第一句話,和句子2,並在第二個文件3 讀取相同的三句話。

翻譯要求直接給出:

with open('somefile1.txt') as f1: 
    lines_file1 = f1.readlines() 
with open('somefile2.txt') as f2: 
    lines_file2 = f2.readlines() 
documents = lines_file1[0:1] + lines_file2[1:3] 

FWIW,給你做那種工作時,[fileinput module][1]可能會有所幫助。

希望這會讓你重新回到業務中:-)