【问题标题】:How to parse a string for array access如何解析字符串以进行数组访问
【发布时间】:2019-09-20 10:36:54
【问题描述】:

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

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

我已经调查过:

import re

key = "fieldA[5]"

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

导致:

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

这用作输出(我可以用它在字典中查找),但实际上并不强制或检查括号的配对,并且它的读取方式以及如何使用此输出在字典中查找不直观.

是否有可用的解析器库或替代方法?

【问题讨论】:

标签: python


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-08
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多