python - 使用python在文本文件中使用相应的标签元素访问和打印特定标签
问题描述
我有使用它的文本文件,我必须访问它下面的特定标签和元素,我也为其他标签做同样的事情
time[v]
A:
work:35,40
test:89,87
B:
test:89,20
c:
work:56,98
desk[k]:
H:
test:32,34
work:43,46
J:
test:65,98
work:56,90
waat[o]:
M:
test:12,14
work:13,18
q:
test:1,24
work:10,68
这种文本文件格式我可以访问特定的标题和副标题,还可以逐个访问元素。
list = ['time[v]:','desk[k]:','waat[o]:']
result=[]
file_open = open(file, 'r')
lines = [l for l in file_open.read().splitlines()]
for i in range(len(lines)):
if lines[i] in list:
result.append(' '.join(lines).split())
[time[v]::[A:[3540,8987],B:[8920],c:[5698]],
[desk[k]::[H:[3234,4346],J:[6598,5690]],
[waat[o]::[M:[1214,1318],q:[124,1068]]]
解决方案
这是一种方法。
前任:
import re
lst = ['time[v]','desk[k]','waat[o]']
cpy = False
result_temp = []
with open(filename) as infile:
for line in infile:
line = line.strip()
if line:
if line.startswith(tuple(lst)): #check for lst
result_temp.append([line])
cpy = True
continue
elif re.match(r"[a-z]+\[[a-z]+\]", line): #check for next key
cpy = False
if cpy:
result_temp[-1].append(line)
result = []
for i in result_temp:
temp = {}
for j in i[1:]:
if re.match(r"[A-za-z]{1}:", j): #Check for "A:", "B:".....
key = j
else:
temp.setdefault(key, []).append(j.split(":")[1].replace(",", ""))
result.append({i[0]: temp}) #form output
print(result)
输出:
[{'time[v]': {'A:': ['3540', '8987'], 'B:': ['8920'], 'c:': ['5698']}},
{'desk[k]:': {'H:': ['3234', '4346'], 'J:': ['6598', '5690']}},
{'waat[o]:': {'M:': ['1214', '1318'], 'q:': ['124', '1068']}}]
推荐阅读
- python - 数据库中的待办事项列表项更新不适用于 Django
- javascript - LayerList 小部件 (ArcGIS JavaScript 4.X) 中的单层可见(切换)
- javascript - JavaScript 回调函数仅部分执行
- python - VS Code 在 conda 环境中无法识别包
- python - 检查消息作者是否有角色 discord.py
- php - 如何在 PHP 中计算我的广播地址?
- docker - 如何使用我的 docker-compose 在 selenium/standalone-chrome docker 映像中配置代理
- python - Python 上的拉普拉斯过滤器无法按预期工作
- c# - 如何序列化字典
使用 JsonConvert newtonsoft c# 到 json - libraries - MH-Tiny ATTINY88 可以使用哪些 LED 控制库?