python - 从具有结构化模式的列表构建字典
问题描述
如何从此文本文件中获取如下字典:
[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]
...等等。
解决方案
假设您的数据是文本行...
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()
推荐阅读
- c# - C# 程序不会在其他计算机上启动。OleDB 命令中的错误
- user-interface - 如何使用 svg 文件而不是直接在 Markdown 中使用 svg 元素从模板中绘制 MDC 复选框刻度线
- c - 在 for 循环的下一次迭代开始后,指针指向的数据在复制另一个列表末尾的列表时被破坏
- javascript - 从 AJAX 请求调用 django 视图(解析 celery task_id)
- android - 如何在打盹模式下检测维护窗口将关闭事件?
- selenium - Xvfb 的 Jenkins 流水线“包装”阶段开始
- reactjs - 反应 setState 无法正常工作
- java - Ignite Spring Data 是否支持 Spring Boot 2?
- java - 为 Libftd3xx 编写 JNA 包装器
- angular - 如何防止只从 mat-datepicker 中选择 DAY?