2016-01-11 18 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]