如何使用 Python 检索具有制表符格式的文件中的值?

Posted

技术标签:

【中文标题】如何使用 Python 检索具有制表符格式的文件中的值?【英文标题】:How to retrieve a value in a file with tab format using Python? 【发布时间】:2022-01-14 04:26:11 【问题描述】:

我有一个格式如下的文件:

FileConfig
;
;     Version: 4.0.0
;     Date="2021/11/19"
;
Name
    James
Number
    1091125
Identifier
    STDNT
Byte
        7687aBap
ID
    22SSWA
Program
    *Internal
    External

我想获取像 NameNumber 等字符串的值。 我试过这种方式,但我只能得到所有的字符串。有没有办法通过初始化'Name'或Number来获取具体值。

file1 = open("myfile.log", "r")
print(file1.readlines())

我期望我可以通过这种方式获得价值:

file1.readlines(Name)

非常感谢您的帮助。我是 Python 新手。非常感谢

【问题讨论】:

【参考方案1】:

我尝试将与您有关的信息保存到字典中,此逻辑基于您共享的文件:

count = 0
key = 0
dic = dict()
key_counter = 1
keys = ["Name","Number"]
with open("file.log") as fp:
    Lines = fp.readlines()
    for line in Lines:
        count += 1
        if "FileConfig" in line.strip() or ";" in line.strip():
            pass
        elif key_counter == 1 and line[0] != " ":
            key_counter = 2
            key= line.strip()
            if key in keys:
                dic[line.strip()] =0
        elif key_counter == 1 and line[0] == " ":
            key_counter = 1
            if key in keys:
                val = dic.get(key)
                if isinstance(val, list):
                    val.append(line.strip())
                    dic[key] =val
                else:
                    dic[key] = [val,line.strip()]
        elif key_counter == 2:
            if key in keys:
                dic[key] = line.strip()
            key_counter = 1
dic

输出:

  'Name': 'James', 'Number': '1091125'

【讨论】:

嗨@alphaBetaGamma,谢谢,但我不需要像那样获取整个字典,我需要获取带有指定键的字典,例如我只需要@987654323 @和Number 我已经更新了答案,在keys列表中,你可以输入你需要的字段名称。

以上是关于如何使用 Python 检索具有制表符格式的文件中的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 上使用正则表达式、开关和修剪来检索文件中的值?

使用制表符和空格读入文件

如何上传Excel直接读取里面的数据,不用鎒xcel文件后再读取

grep 单词并检索匹配项和以下以制表符开头的行

如何在 C++ ATL/MFC 中检索具有相同格式的刻度,如 DateTime.Ticks

PEP 8 -- Python代码格式规则