使用变量名称和方括号进行Python解析

时间:2015-07-17 19:34:19

标签: python regex square-bracket

我有一个名为item.dat的文件,其中包含括号内的关键字:

[ITEM1]
banana
peach
apple
orange
grapes
[END]
[ITEM3]
tennis
bowling
[END]
........

我想要处理括号中的关键字之间的界限。变量wil包含我想要提取的括号内的行。问题是如何为" [ItemName]"?

执行行比较
del item[:]
ItemName = "ITEM3"
with open('item.dat') as input_data:
    for line in input_data:
        if line.strip() == "\[ItemName\]":   # the problematic line
            break
    for line in input_data:  # This keeps reading the file
        if line.strip() == '[END]':
            break
        print line
        item.append(line)

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

^\[(?!END).*]

Regex live here.

解释

^\[          # starts with a '[' character
(?!END)      # don't match 'END'
.*]$         # take all till the end ']' character

希望它有所帮助。

答案 1 :(得分:0)

我相信您提出的问题可以使用here提供的解决方案进行回答,只需稍加修改即可。由于链接的答案是如此彻底,我不会重复答案,但如果由于某种原因不起作用,请告诉我,我可以提供一些替代方案。

答案 2 :(得分:0)

不知道我是否真的理解这个问题,但提取括号内容值的简单方法是:

var imgWheel = new wheelnav("divId");
imgWheel.createWheel(["img/menu1.png","img/menu2.png","img/menu3.png"]);

使用提供的数据打印两个列表,结果如下:

items = []
variables = []

with open('item.dat') as input_data:
    for line in input_data:
        line = line.strip()
        if line and line[0] == '[' and line[-1] == ']':
            variables.append(line)
        else:
            items.append(line)