首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从文档中读取行并将某些行存储在字典/数组- python中。

从文档中读取行并将某些行存储在字典/数组- python中。
EN

Stack Overflow用户
提问于 2022-08-06 04:02:05
回答 1查看 55关注 0票数 0

我有一份我正在读的文件。使用python 3.7

该文件是自动化的,因此文件的格式如下:

代码语言:javascript
运行
复制
    Computer #1 - gaming 
       spec 1 = something 
       spec 2 = something 
       spec 3 = something
       other stuff = sadas 
    computer #2 - coding 
       spec 1 = something 
       spec 2 = something 
       spec 3 = something 
       other stuff = sadas
    computer #n - etc 
       spec 1 = something 
       spec 2 = something 
       spec 3 = something 
       other stuff = sadas

我希望将信息存储到字典/数组中:

data ={“计算机#1":sepc1,spec2,spec3,"computer #2":sepc1,spec2,spec3,"computer #n":sepc1,spec2,spec3 }

代码语言:javascript
运行
复制
lines = file_read.readlines()
for line in lines: 
    if 'computer #' in line: 
    data[line] = []
if 'spec1' in line:
    # here I want to add that value/line to the the first key/value such that: 
    # data['computer #1'].append(line)
    # data['computer #2'].append(line)
    # data['computer #n'].append(line)

我拥有的文件很大,并且有相关的信息。上面的这些行只是为了说明我正在处理的

每次我们找到关键词(计算机#)时,我都试着添加一个计数器。但我不确定如何检查计数器更改的状态,以便将所有“查找/需要”行(specs)添加到数组中。

花了太多时间来解决这个问题。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-06 04:22:31

如果spec可能以行形式出现(作为字符串或其他单词的一部分),则使用regex与spec \d+ =模式匹配可能更安全:

代码语言:javascript
运行
复制
import re
data = {}

with open("file.txt", 'r') as f:
    for l in f.readlines():
        if 'computer #' in l:
            key = l.split('-')[0].strip()
            data[key] = []
        elif re.search(r'spec \d+ =', l):
            val = l.split('=')[0].strip()
            data[key].append(val)

print(data)

输出:

代码语言:javascript
运行
复制
{'computer #1': ['spec 1', 'spec 2', 'spec 3'], 'computer #2': ['spec 1', 'spec 2', 'spec 3'], 'computer #n': ['spec 1', 'spec 2', 'spec 3']}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73257075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档