将纯文本文档解析为python数组

2024-09-27 04:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个python格式的文本文件(数值可以是任何十进制值):

'Document1',[
    'words_list1',[  
        'word1',[  
            'value1', 4,  
            'value2', 50],  
        'word2',[  
            'value1', 2,  
            'value2', 30], 
         ...
        'wordx',[  
            'value1', 1,  
            'value2', 9]]],
 'Document2',[
    'words_list2',[  
        'word1',[  
            'value1', 1,  
            'value2', 4],  
        'word2',[  
            'value1', 6,  
            'value2', 99], 
         ...
        'wordx',[  
            'value1', 22,  
            'value2', 92]]],
 ...

 'Documentx',[
    'words_listx',[  
        'word1',[  
            'value1', 1,  
            'value2', 4],  
        'word2',[  
            'value1', 6,  
            'value2', 99], 
         ...
        'wordx',[  
            'value1', 22,  
            'value2', 92]]] 

我想按文档、单词和值将其解析为python数组(即,我希望能够通过以下方式访问每个值:array_name[document#][word#][value#]。你知道吗

任何关于如何实现这一点的帮助都是非常有用的——我是python新手,不确定是否有任何库可以帮助我实现这一点。你知道吗

谢谢


Tags: 格式数值words文本文件value1list2list1value2
3条回答
word_dic = eval(open("word.txt").read())

在库中不需要,您只需eval

doc = """'Document1',[
            'words_list1',[
                'word1',[
                     'value1', 4,
                     'value2', 50],
                 'word2',[
                     'value1', 2,
                     'value2', 30],
                 'wordx',[
                     'value1', 1,
                     'value2', 9]]]"""
>>> d = eval('[{}]'.format(doc))
>>> d
['Document1', ['words_list1', ['word1', ['value1', 4, 'value2', 50], 'word2', ['value1', 2, 'value2', 30], 'wordx', ['value1', 1, 'value2', 9]]]]

转换成dict,由@JoranBeasley撰写

def to_dict(l):
    if not isinstance(l[1], list):
       return dict(zip(*[iter(l)]*2))
    rv = zip(*[iter(l)]*2)
    return {k: to_dict(v) for k, v in rv}

>>> to_dict(d)
{'Document1': {'words_list1': {'word1': {'value2': 50, 'value1': 4}, 'wordx': {'value2': 9, 'value1': 1}, 'word2': {'value2': 30, 'value1': 2}}}}

您可以这样将文件加载到python中:

text = open('txt_filename').read()
data = eval('[' + text + ']')

然后你可以数数据来得到你想要的

相关问题 更多 >

    热门问题