在文本文件Python中读取标签

时间:2015-08-06 14:22:15

标签: python list sorting text-files

所以基本上我有一个像这样的文本文件设置。

[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 _,

3 个答案:

答案 0 :(得分:3)

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

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))

答案 1 :(得分:1)

在对象中的数组上添加键。

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]

答案 2 :(得分:1)

这将生成文件中所有设置的字典。这假定文件的语法始终采用所描述的样式。

输入:

[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。