如何将输出以正确的形式打印到文件中?

时间:2016-01-11 05:49:20

标签: python

我有一份文件清单。像这样:

['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()

我的问题是,在删除后缀后,程序会将所有文档的所有单词放入一个大的列表中。但是,我希望它们在预处理之后以原始形式(即早先的文档列表)返回。我该如何修改代码?

2 个答案:

答案 0 :(得分:0)

你的意思是对文档每行的每个单词运行stemm()吗?

以下是代码:

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

答案 1 :(得分: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)