2016-01-11 37 views
0

我有一個文檔列表。像這樣:如何讓輸出以正確的格式打印到文件中?

['nn', 'known', "tsutsumi's", 'father', 'yasujiro', 'sowed', 'seeds', "family's", 'dominion'] 
['un', 'secretary', 'general', 'kofi', 'annan', 'appointed', 'special', 'representative', 'iraq', 'help', 'improve', 'communication', 'iraqi', 'leaders'] 
['confidence', 'debate', 'repeatedly', 'chided', 'opposition', 'speakers', 'joining', 'groups', 'bitter', 'critics', 'nationalists', 'past'] 

每個文檔都是一個字符串列表。

我正在對這些文件進行一些預處理,其中我刪除區分這些單詞的後綴。

這裏是我的代碼:

results=[] 

    with open('/Users/mtr/Documents/Stemtry.txt') as filer: 
     for line in filer: 
      results.append(line.strip().split()) 

    result=[] 
    final=[] 
    temp=[] 

    def stemm(n): 
     for suffix in ['ing', 'ly', 'ed', 'ious', 'ies', 'ive', 'es', "'s", 'ment', "s", "'ve", "'t", "'"]: 
      if n.endswith(suffix): 
       return n[:-len(suffix)] 
     return n 

    for eachitem in results[:10]: 
     for n in eachitem: 
      r=stemm(n) 
      final.append(r) 
    print(final) 
    result.append(final) 

    datafile=open("Stemmingg.txt", "w") 
    for each in result: 
     for every in each: 
      datafile.write(each+' ') 
     datafile.write("\n") 
    print(datafile) 
    datafile.close() 

我的問題是,去掉後綴後,程序將所有文件的話都變成一個大名單。但是,我希望它們在預處理後以原始形式返回(即早些時候的文檔列表)。我應該如何修改代碼?

+0

我無法理解你的代碼 – Arman

+0

final'和'result'之間'區別是原話都單引號和雙引號?你爲什麼不給第5行分割分隔符? – arve0

+0

@阿曼最後只是一個單詞列表。我試圖使用結果將單詞附加到單獨的文檔中,但它不起作用。 – minks

回答

0

你最後的不斷積累。在外環重新定義它:

for eachitem in results[:10]: 
    final = [] 
    for n in eachitem: 
     r=stemm(n) 
     final.append(r) 
    result.append(final) 

,甚至更好,使用list comprehension

for eachitem in results[:10]: 
    final = [stemm(n) for n in eachitem] 
    result.append(final) 
+0

哦,是的,它的工作。決賽越來越重。謝謝 :) – minks

0

您的意思是對文檔的每一行的每個單詞運行stemm()嗎?

下面是代碼:

final = [[stemm(x) for x in line] for line in result]