读取文本文件中的标签 Python

Reading Tags in text File Python

基本上我有一个类似这样的文本文件设置。

[IP] 192.168.22.12
[NAME] gtty
[COMMAND] i2203320

我想用标签读取我文件中的所有内容 [IP] 然后上面有一个 IP 我会检查因为这些将是我正在使用代码的系统的一些设置我现在用的就是这个

while line != '':

if (line == '[IP]'):
    List [0] == line[5:]

它真的不是最好的,老实说我希望它能更好地工作。我必须为我添加的每一行设置 if 语句,我只是希望它更简单,比如可能有一个列表或带有命名值的东西并拥有它,所以当我读取文件时它已经在寻找值并分配他们。

nameList = ['[IP]': line.read()]

类似的东西我知道那个语法可能是错误的但我只是想举个例子让每个人都知道我想说什么。

问候 BSD_,

用正则表达式做,很容易解析:

import re

pat = re.compile(r'\[(.*?)\](.*)')

settings = {}

with open('your_file') as fd:
    for line in fd:
        m = pat.match(line)
        if m is None: continue
        settings[m.group(1)] = m.group(2).strip()

一切都应该在 settings 现在。

通过以下方式获取 IP 信息:

ip = settings['IP']

反向操作:

with open('your_file', 'w') as fd:
    for k, v in settings.items():
        fd.write('[{}] {}\n'.format(k, v))

在对象数组中添加键。

obj = {};
with open("text.txt", "r") as f:
    for line in f:
        key = line.split()[0]
        try:
            obj[key]
        except:
            obj[key] = []
        obj[key].append(line.split()[1])
for key in obj:
    print key, obj[key]

这将生成文件中所有设置的字典。这假定文件的语法与所描述的样式一致。

输入:

[IP] 192.168.22.12
[NAME] gtty
[COMMAND] i2203320

settings = {}
with open("text.txt", "r") as f:
    for line in f:
        items = line.split()
        settings[items[0]] = ' '.join(items[1:])

输出:

{"[IP]":"192.168.22.12", "[NAME]":"gtty, "[COMMAND]":"i2203320"}

然后您可以在需要时通过调用 settings["[IP]"] 获取 IP 或任何设置。你当然可以很容易地编辑它,只添加实际上以 [ ] 项目开头的行,其中只有一个额外的 if-case。