2016-01-23 35 views
0

我最近開始使用Python,我正在嘗試一些東西。我知道Python中的一些基本指令,以及它們的工作原理。但大部分時間我都不知道這些說明的例外和小細節。在處理文本文件(Python)時for循環的功能

我想製作一個數組,並將文本文件放入該數組中。我使用這段代碼: document = [] with open('inputfile.txt') as f: for line in f: document.append(line.strip().split(' ')) print(document)

這樣做是將輸入文件放在變量「f」中,然後對於「f」中的「line」將該行作爲單獨的數組添加。我知道「.strip()」擺脫了「\ n」,「.split('')」用單獨的單詞將句子分開。我的問題是:

1.)爲什麼python知道「行」變量表示一個新行?換句話說:爲什麼它會爲每條線「做點什麼」,而不是例如。爲每個單詞?它適用於任何單詞,所以它不是那種特殊的語法。

2.)我可以改變這個東西嗎?

3.)爲什麼每行都添加爲一個新的數組(從而創建一個2D數組)?爲什麼不是所有的處理文本都塞進一個數組? (我知道這樣更好,但這不是重點,關鍵是:爲什麼?)

回答

0

1)它知道這是一個新行,因爲你的文本文件(通常)在其中有新的行字符每一行的末尾(不可見的,除非你設置你的編輯器來顯示所有隱藏字符(S))

2)有幾個不同的方式做同樣的事情

3)分裂()返回一個列表,所以每一行將是一個單詞列表,你的'文檔'將是列表的列表。

+0

3上的答案是一個很好的答案,謝謝你。 2並不是那麼有幫助,但至少我知道現在有可能。我會搜尋自己。和問題一:我知道我的文本文件中有字符我看不到,但我想知道爲什麼for循環選擇'\ n'來循環,而不是像空間的東西。 –

+0

我在1)誤解了你的問題。當你用來循環文件對象時,Python的行爲就是這樣。 2)我的意思是,你這樣做的方式很好。還有其他的方法,但我沒有看到你在這個具體的例子中改變任何理由 – nge

+0

在這個線程中接受的答案應該有所幫助:http://stackoverflow.com/questions/16922214/reading-a-text-file-和分離-IT-成單的話,在-蟒蛇 – nge