替换子列表中的单词

时间:2013-04-04 16:08:27

标签: python parsing replace sublist

我对python不是很有经验 我有一个解析树列表结构,其中包含一个列表,其中包含子列表中的子列表,依此类推。 我需要用 RARE 替换树中的一些单词。 我写了一个递归过程,允许我找到这个词,并确定它们是否符合更换条件。 我被困在如何在原始文件中实际替换它们。

import json
s_tring=json.loads(open("tree.example").readline())
def word_find(s_tring):
    for item in s_tring:
        #check if end of tree, always with character "."
        if "." in item[0]:
            break
        else:
            #words only appear in sublists of length 2
            #some of those are lists of strings ['a','b'] (word is 'b')
            #others are list with sublists ['a',['b','c']] (word is 'c')
            if len(item)==2 and type(item)==list:
                if type(item[1]) == list:
                    word-to_evaluate = item[1][1]
                    #need to replace it in tree.example if condition met
                else:
                    word_to_evaluate = item[1]
                    #need to replace it in tree.example if condition met
            else:
                #recursive call to continue drilling down the tree
                if len(item)==3:
                    word_find(item)
    return

word_find(s_tring)

1 个答案:

答案 0 :(得分:0)

你根本不写文件。您应该重新打开文件进行写入(或打开另一个文件)。你可以这样做:

with codecs.open('result_file.json', 'w', 'utf-8') as output_file:
    output_file.write(json.dumps(your_data))

此外,您应该使用open()

关闭打开的文件描述符
fd = open(filename, filemode)
# do your stuff to fd
fd.close()

此语法的替代语法(python2.5 +)是

with open(filename, 'r') as fd:
    lines = fd.readlines() # or anything else to do with fd

还有一件事 - 你用.readline()方法只读一行。