2015-11-13 92 views
1

我有一句話'現在對於完全不同的東西'。我想標記它,標記並將其存儲到Excel文件中以供進一步處理。
<pre>sent = "And now for something completely different" words = nltk.word_tokenize(sent) tags = nltk.pos_tag() print tags</pre>在Excel中寫一個清單

上面的結果是帶有嵌套列表格式的標籤的單詞。

[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'), ('completely', 'RB'), ('different', 'JJ')]

我想這個結果列表存儲到一個Excel文件,在一列文字和標籤其他。

我試着通過下面的代碼來實現上述目的。

fd = open("output.txt",'w') 
i=0 
for words in tags: 
    for word in words: 
     i+=1 
     fd.write(word) 
     if i==1: 
      fd.write('\t') 
     fd.write('\n') 
    i=0 

上述代碼將字和標籤完美地寫入輸出文件。如果我使用shutil方法從文本文件複製到excel格式,它將完美執行。當我嘗試閱讀轉換時出現問題。我收到以下錯誤。

XLRDError: Unsupported format, or currupt file: Expected BOF record; founf 'And\tCC\n'

誰能告訴我,我該怎麼寫標記列表輸出文件,這樣我上面的錯誤能解決嗎?

+1

如何使用shutil從文本複製到excel格式?你知道excel格式不只是文件擴展名(.xlsx)。這意味着文件的內容應該以特殊的方式組織起來,以便Excel應用程序知道如何閱讀它。一般來說,您可以使用[xlsxWriter](https://pypi.python.org/pypi/XlsxWriter)模塊,也可以使用[CSV]編寫文件(https://en.wikipedia.org/wiki/Comma-separated_values )格式,然後在Excel中導入它。 –

回答

4

Excel文件(xlsx)不只是簡單的平面文件,所以試圖將文本文件複製到xlsx將不起作用。您可以將文件另存爲csv並在Excel中打開它。我認爲熊貓對解析和寫入數據文件非常有用(顯然它對處理數據也很有用)。

import pandas as pd 
df = pd.DataFrame(tags) 
df.to_excel('output.xlsx', header=False, index=False) 
+0

我對熊貓一無所知,但會嘗試你的建議並讓你知道結果。 –

+0

我嘗試了你的建議。我工作。非常感謝你。如果我有一個以上的句子,這會起作用嗎? –

+0

是的。您也可以輸出到不同的工作表,從不同的單元格開始,或者使用標題/索引輸出。如果您想一次將多個表寫入不同位置,請使用pd.ExcelWriter。 – Colin

1

而不是寫入excel格式。您已經將文件寫入製表符分隔值。 Excel知道如何閱讀。我建議你用'.tsv'擴展名保存你的文件並在excel中打開它。

+0

我試圖以.ts格式保存文件,而且我仍然收到相同的錯誤。感謝您的建議。 –