首页 > 解决方案 > 从具有结构化模式的列表构建字典

问题描述

如何从此文本文件中获取如下字典:

[Fri Aug 20]
shamooshak 4-0 milan
Tehran 2-0 Ams
Liverpool 0-2 Mes
[Fri Aug 19]
Esteghlal 1-0 perspolise
Paris 2-0 perspolise
[Fri Aug 20]
RahAhan 0-0 milan
[Wed Agu 11]
Munich 3-3 ABC
[Wed Agu 12]
RM 0-0 Tarakto
[Sat Jau 01]
Bayern 2-0 Manchester

我已经尝试过列表理解,用于具有枚举功能的循环。但我无法建立这个列表。

我想要的字典是: {'[Fri Aug 20]':[shamooshak 4-0 milan, Tehran 2-0 Ams,Liverpool 0-2 Mes],'[Fri Aug 19]':[Esteghlal 1-0 perspolise,Paris 2-0 perspolise]...等等。

标签: pythonlistdictionaryconverters

解决方案


假设您的数据是文本行...

def process_arbitrary_text(text):
    obj = {}
    arr = []
    k = None
    for line in text:
        if line[0] == '[' and line[-1] == ']':
            if k and arr: # omit empty keys?
                obj[k] = arr
            k = line
            arr = []
        else:
            arr.append(line)
    return obj

desired_dict = process_arbitrary_text(text)

编辑:由于您编辑说它是一个文本文件,因此只需包含以下模式

with open('filename.txt', 'r') as file:
    for line in file:
        # do something...or:
    text = file.readlines()

推荐阅读