如何解析字符串以进行数组访问

时间:2019-05-01 22:18:31

标签: python

我正在尝试分析用户输入,该用户输入指定了要在字典中查找的值。

例如,此用户输入可以是字符串fieldA[5]。然后,我需要在字典中查找键fieldA(将是列表),然后在位置5处抓取元素。这应该可以推广到列表的任何深度,例如fieldA[5][2][1][8],并因无效输入fieldA[5[fieldA[5][7而正常失败。

我调查过这样做:

import re

key = "fieldA[5]"

re.split('\[|\]', key)

结果为:

['fieldA', '5', '']

这可以作为输出(我可以用它在字典中查找),但实际上并没有强制执行或检查方括号对,并且在如何读取以及如何使用此输出在字典中查找方面不直观。

是否有解析器库或其他可用方法?

1 个答案:

答案 0 :(得分:0)

如果您不希望它变得比您所描述的复杂得多,则可以使用一些正则表达式。我通常不会为此目的推荐它,但我希望您能够从某个地方开始...

import re
key = input('Enter field and indices (e.g. "fieldA[5][3]"): ')
field = re.match(r'[^[]*', key).group(0)
indices = [int(num) for num in re.findall(r'\[(\d+)]', key)]

这将根本无法识别出缺少的字段或不正确的括号,并分别返回空字符串或列表。