这是我正在尝试使用pyparsing解析的DSL的代码段

我有一个格式为<keyword> 02 01 30 03 40 20 10的字符串
哪里
02是字符串数
01是字符串1的长度(以字节为单位)
30是string1本身
03是string2的长度(以字节为单位)
 40 20 10是字符串2

如何使用pyparsing标记此字符串?

最佳答案

所以这是countedArray的countedArray吗?你试过了吗:

from pyparsing import Word,nums,alphas,countedArray

test = "key 02 01 30 03 40 20 10"

integer = Word(nums)

# each string is a countedArray of integers, and the data is a counted array
# of those, so...
lineExpr = Word(alphas)("keyword") + countedArray(countedArray(integer))("data")

# parse the test string, showing the keyworod, and list of lists for the data
print lineExpr.parseString(test).asList()


给出:

['key', [['30'], ['40', '20', '10']]]


命名结果还使您可以按名称获得解析的位:

result = lineExpr.parseString(test)
print result.keyword
print result.data


给出:

key
[[['30'], ['40', '20', '10']]]

关于python - pyparsing:嵌套countedArray吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18808363/

10-10 04:02